MySQL - связать поле таблицы с другим полем этой же таблицы

290
29 сентября 2017, 16:51

Есть БД, в ней 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)

В чем может быть проблема?

Answer 1

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.

READ ALSO
Переопределение метода, Override

Переопределение метода, Override

Надо искать пересечения множествУ каждого класса есть метод добавляющий элемент, метод выводящий содержание класса на экран

220
Не учитывать первую часть из split

Не учитывать первую часть из split

У меня есть массив емейлов, мне нужно из них вытащить только доменыКак с помощью метода split не учитывать или удалить строку, которая идет до знака...

232
Как правильно считать элементы из файла в массив java

Как правильно считать элементы из файла в массив java

Как правильно считать элементы из файла в массивИ что бы потом этот массив можно было передавать другим методам, например для сортировки

394
Обработка Json Timestamp

Обработка Json Timestamp

В ответе, полученном с сервера, есть значение типа Timestamp, его нужно преобразовать из Json в TimestampДля int это можно сделать так:

226