фактическая обработка первичного, внешнего ключа и уникального ограничения, порядок / этапы их работы - PullRequest
2 голосов
/ 28 марта 2011

Как работают первичный ключ, внешний ключ и уникальные ограничения? я имею в виду в какой последовательности?

Например, когда дочерняя таблица имеет FK, и в нее вставляется запись, которой нет в родительской таблице, затем эта запись сначала вставляется в дочернюю таблицу, а затем проверяется ограничение в родительской таблице. если эта запись существует или нет, и если она не находит ее, она выполняет откат и удаляет запись из дочерней таблицы. это порядок работы?

или, сначала SQL получает запись (для которой создается FK) из запроса на вставку, и сопоставляет ее с записями родительской таблицы, и прекращает вставку, когда соответствующая запись не найдена, а сама вставка и не ' t вставляет строку в дочернюю таблицу?

Аналогичным образом, для первичного ключа, если в таблицу вставляется повторяющаяся запись, затем сначала она вставляется, затем проверяется или перед вставкой сначала сопоставляется с существующими записями, а если это дублирующая запись, то запрос прекратилось.

Ответы [ 3 ]

1 голос
/ 28 марта 2011

С логической точки зрения предполагается, что все ограничения должны проверяться одновременно по всему результату оператора UPDATE, INSERT или DELETE.Ограничения оцениваются так, как если бы изменение всех строк уже произошло, и если какое-либо ограничение будет нарушено, изменение не разрешено.

0 голосов
/ 28 марта 2011

Рассмотрим логические (концептуальные) таблицы deleted и inserted, которые доступны для TRIGGER. Даже это всего лишь понятия. Кто знает, что происходит под одеялом? ... ну, кто-то обязательно должен знать ... но вам небезразлично что происходит под одеялом? На концептуальном уровне это либо успешно, либо неудачно, или вы можете управлять результатом в триггере. Что еще нужно знать? ;)

0 голосов
/ 28 марта 2011

Вам нужна базовая ссылка на rdbms. Вот бесплатный ресурс: http://msdn.microsoft.com/en-us/library/aa933098%28v=SQL.80%29.aspx

...