Как правильно использовать «ОБНОВЛЕНИЕ КАСКАДА» в MariaDB 10.1.37 / Ver 15.1? - PullRequest
0 голосов
/ 02 февраля 2019

У меня возникли проблемы с включением ОБНОВЛЕНИЯ КАСКАДА для работы с ОГРАНИЧЕНИЕМ.Если я использую UPDATE, чтобы изменить значение customerName в таблице customer , оно не изменит значение customerName в таблице city ,Сообщение об ошибке не отображается.

Версия MariaDB:

Ver 15.1 Distrib 10.1.37-MariaDB

Мой город при использовании ПОКАЗАТЬ СОЗДАТЬ ТАБЛИЦУ города :

city  | CREATE TABLE `city` (
  `cityId` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `city` varchar(50) DEFAULT NULL,
  `countryId` int(10) unsigned DEFAULT NULL,
  `customerName` varchar(50) DEFAULT NULL,
  `address` varchar(50) DEFAULT NULL,
  `postalCode` varchar(50) DEFAULT NULL,
  `phone` varchar(50) DEFAULT NULL,
  `createDate` varchar(50) DEFAULT NULL,
  `createdBy` varchar(50) DEFAULT NULL,
  `lastUpdateBy` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`cityId`),
  KEY `customerNameChange01` (`customerName`),
  CONSTRAINT `customerNameChange01` FOREIGN KEY (`customerName`) 
      REFERENCES `customer` (`customerName`)
      ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1

My customer table SHOW CREATE TABLE customer :

customer | CREATE TABLE `customer` (
  `customerId` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `customerName` varchar(50) DEFAULT NULL,
  `addressId` int(10) unsigned DEFAULT NULL,
  `active` int(10) unsigned DEFAULT NULL,
  `address` varchar(50) DEFAULT NULL,
  `city` varchar(50) DEFAULT NULL,
  `postalCode` varchar(50) DEFAULT NULL,
  `phone` varchar(50) DEFAULT NULL,
  `createDate` varchar(50) DEFAULT NULL,
  `createdBy` varchar(50) DEFAULT NULL,
  `lastUpdateBy` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`customerId`),
  KEY `CustomerName` (`customerName`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1

Это команды, которые я использовал для создания индекса и CONSTRAINT:

CREATE INDEX CustomerName ON customer (customerName);

ALTER TABLE city
  ADD CONSTRAINT customerNameChange01
  FOREIGN KEY (customerName)
  REFERENCES customer (customerName)
  ON UPDATE CASCADE
  ON DELETE SET NULL;

В таблице клиентов ключ CustomerName ссылается на индекс.В противном случае я бы не смог вставить CONSTRAINT в таблицу city .

Обновление: Код отлично работает в DB Fiddle для MariaDB 10.2 и личноготестирование подтверждает, что пример кода оттуда работает и в моей собственной базе данных.

Спасибо за потраченное время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...