Что такое по умолчанию ONDELETE и ONUPDATE для внешних ключей в SQL? - PullRequest
3 голосов
/ 24 марта 2010

Я полагаю, что ссылка на внешний ключ по умолчанию установлена ​​в RESTRICT. Но есть ли стандарт для этого? Равно ли значение по умолчанию для любого типа базы данных? Или эти значения должны быть определены во всех утверждениях просто для уверенности?

Ответы [ 2 ]

1 голос
/ 24 марта 2010

Для postgres НЕТ ДЕЙСТВИЯ по умолчанию, которое для большинства целей совпадает с ОГРАНИЧЕНИЕМ, как указано здесь .

Я бы порекомендовал быть явным, особенно в DDL, всякий раз, когда есть сомнения (а затем и некоторые). Для этого есть разные причины:

  • Некоторое поведение для операторов определения данных может зависеть от настроек и версий сервера, поэтому для резервного копирования и восстановления может быть полезно явное
  • Если вы попытаетесь переместить ваши данные из одного механизма СУБД в другое явное состояние, это поможет вам уловить недопонимание между двумя диалектами (если они не будут молча пропускать пропущенную часть)
  • Если вы даже думаете о двусмысленности сейчас, попробуйте представить себе следующего парня, который будет обслуживать базу данных или вас самих через несколько лет - если вы будете откровенны и комментируете свои сценарии создания, это окупится за один день
0 голосов
/ 24 марта 2010

Следует также учитывать, что не все СУБД допускают эти параметры (и не допускают одинаковые значения в них). Например, я думаю, что Oracle не поддерживает предложение onupdate

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...