MySQL RESTRICT и NO ACTION

Какая разница в mySQL FK между RESTRICT и NO ACTION? Из документа они кажутся точно такими же. Это так? Если да, то почему оба?

4b9b3361

Из документации MySQL: http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html

Некоторые системы баз данных отложены проверок, а НЕТ ДЕЙСТВИЙ - отсрочка проверить. В MySQL внешний ключ ограничения проверяются немедленно, поэтому НИКАКОЕ ДЕЙСТВИЕ не будет таким же, как RESTRICT.

33
ответ дан 27 апр. '11 в 23:17
источник

Они идентичны в MySQL.

В стандарте SQL 2003 существует 5 различных ссылочных действий:

CASCADE
RESTRICT
NO ACTION
SET NULL
SET DEFAULT

Разница между NO ACTION и RESTRICT заключается в том, что согласно стандарту NO ACTION откладывается, а RESTRICT действует немедленно.

12
ответ дан 27 апр. '11 в 23:19
источник

Он должен соответствовать стандартному синтаксису SQL. Как руководство говорит: (акцент мой)

НЕТ ДЕЙСТВИЯ: Ключевое слово из стандартного SQL. В MySQL эквивалентно RESTRICT. Сервер MySQL отклоняет операцию удаления или обновления для родительской таблицы, если в ссылочной таблице имеется соответствующее значение внешнего ключа. Некоторые системы баз данных имеют отложенные проверки, а НЕТ ДЕЙСТВИЙ - отсроченная проверка. В MySQL ограничения внешних ключей проверяются немедленно, поэтому NO ACTION не совпадает с RESTRICT.

10
ответ дан 27 апр. '11 в 23:17
источник