Будут ли корректно обновляться ограничения MySQL InnoDB ON UPDATE CASCADE при выполнении команды MySQL REPLACE? - PullRequest
0 голосов
/ 26 марта 2010

Если у меня есть таблица B со ссылками на внешние ключи к таблице A (установлено значение ON UPDATE CASCADE), и я запускаю команду

LOAD DATA INFILE file.txt REPLACE INTO TABLE A;

, ссылки будут обновляться правильно?

Пожалуйстаобратите внимание, что я не говорю об УДАЛЕННОМ КАСКАДЕ;Я знаю, что команда REPLACE удалит записи в таблице B, если у меня есть этот набор.

Ответы [ 2 ]

0 голосов
/ 05 февраля 2011

MySQL не запускает событие обновления в результате запроса на замену, только удаление. И вот почему:

REPLACE работает точно так же, как INSERT, за исключением того, что если старая строка в таблице имеет то же значение, что и новая строка для ПЕРВИЧНЫЙ КЛЮЧ или УНИКАЛЬНЫЙ индекс, старая строка удаляется перед новой строкой вставлен.

(из Справочного руководства MySQL 5.0 )

У меня есть внешний ключ, установленный с ON UPDATE CASCADE ON DELETE, SET NULL, и всякий раз, когда я выполняю ЗАМЕНУ первичного ключа внешней таблицы, внешний ключ в моей связанной таблице устанавливается на NULL.

0 голосов
/ 22 августа 2010

Я действительно попал сюда после поиска аналогичного ответа. Похоже, что REPLACE INTO по-прежнему удаляет элементы, если для ограничения установлено значение ON DELETE CASCADE.

См. http://www.mysqlperformanceblog.com/2007/01/18/insert-on-duplicate-key-update-and-replace-into/

...