Можно ли отложить проверки ссылочной целостности до конца транзакции в SQL Server? - PullRequest
5 голосов
/ 25 августа 2009

Недавно я прочитал в PofEA Фаулера, что некоторые механизмы баз данных позволяют вам откладывать проверки RI до конца транзакции. Возможно ли это в SQL Server?

Проблема возникает в некоторых сценариях, в которых я пытаюсь сохранить изменения, которые включают вставки и удаления, может быть сложно определить правильный порядок выполнения операций, чтобы избежать сбоев RI. Я знаю, что в конце транзакции RI будет хорошим, поэтому кажется идеальным отложить эти проверки.

Ответы [ 4 ]

3 голосов
/ 25 августа 2009

Похоже, что сервер sql этого не допускает, но вы не единственный , кто этого хочет. Это часть стандарта SQL 92, поэтому у них есть 17 лет, чтобы понять это. С другой стороны, MySQL также не поддерживает его (хотя Oracle поддерживает).

Изменение порядка утверждений, вероятно, является вашим лучшим вариантом.

2 голосов
/ 25 августа 2009

Если вы используете SQL Server 2008, вы можете использовать MERGE , чтобы объединить вставку / удаление в одну безопасную для RI транзакцию ...

2 голосов
/ 25 августа 2009

SQL Server не имеет этой функции.

Могу ли я смиренно предложить, что если сложно определить правильный порядок вставки (или его нет), то, возможно, потребуется изменить структуру вашей базы данных или, по крайней мере, тщательно ее изучить.

2 голосов
/ 25 августа 2009

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

...