Есть БД, в ней 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.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Надо искать пересечения множествУ каждого класса есть метод добавляющий элемент, метод выводящий содержание класса на экран
У меня есть массив емейлов, мне нужно из них вытащить только доменыКак с помощью метода split не учитывать или удалить строку, которая идет до знака...
Как правильно считать элементы из файла в массивИ что бы потом этот массив можно было передавать другим методам, например для сортировки
В ответе, полученном с сервера, есть значение типа Timestamp, его нужно преобразовать из Json в TimestampДля int это можно сделать так: