У меня есть следующая таблица:
CREATE TABLE IF NOT EXISTS `Tree` (
`id` int(10) NOT NULL,
`parent` int(10) DEFAULT NULL,
`text` varchar(200) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`),
KEY `parent` (`parent`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `Tree` (`id`, `parent`, `text`) VALUES
(1, 1, '1'),
(2, 1, '1.1'),
(3, 1, '1.2'),
(4, 1, '1.3');
ALTER TABLE `Tree` ADD CONSTRAINT `tree_ibfk_1` FOREIGN KEY (`parent`) REFERENCES `tree` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
После выполнения всех вышеприведенных утверждений возникла проблема для следующего:
UPDATE `Tree` SET `id` = '10' WHERE `Tree`.`id` = 1
Хотя ожидается, что изменение основного идентификатора приведет к автоматическому обновлению всех связанных parent
записей из-за ограничения ON UPDATE CASCADE
. Разве не касаются эти каскадные ограничения ссылочной целостности?