Есть БД, в ней Primary key это поле name (varchar 255). И есть поле main (varchar 255). Поле main связано с полем name через FOREIGN KEY.
Теперь, я хочу изменить поле name в одной записи, и чтобы все записи у которых стоит такое же main, поменялись автоматом.
| adels | CREATE TABLE `adels` (
`name` varchar(255) NOT NULL,
`description` varchar(255) NOT NULL,
`main` varchar(255) DEFAULT NULL,
PRIMARY KEY (`name`),
KEY `main` (`main`),
CONSTRAINT `adels_ibfk_1` FOREIGN KEY (`main`) REFERENCES `adels` (`name`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=MyISAM DEFAULT CHARSET=latin1 |
Начальные записи:
perm_name, perm_desc, NULL
role_name, role_desc, perm_name
Надо, чтобы поменяв значение perm_name на perm_name2, таблица приняла следующий вид:
perm_name2, perm_desc, NULL
role_name, role_desc, perm_name2
Но при попытке изменить эту строку выходит оши
UPDATE `adels` SET `name` = 'perm_name2' WHERE `adels`.`name` = 'perm_name'
#1451 - Cannot delete or update a parent row: a foreign key constraint fails (`full`.`adels`, CONSTRAINT `adels_ibfk_1` FOREIGN KEY (`main`) REFERENCES `adels` (`name`) ON DELETE CASCADE ON UPDATE CASCADE)
В чем может быть проблема?
MyISAM and FOREIGN KEY Constraints
If ON UPDATE CASCADE or ON UPDATE SET NULL recurses to update the same table it has previously updated during the cascade, it acts like RESTRICT. This means that you cannot use self-referential ON UPDATE CASCADE or ON UPDATE SET NULL operations.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости