Нет, извините. SQL Server не допускает отложенных ограничений в транзакции. Он присутствовал в SQL Server 6.5, но удален в SQL Server 2000:
SET DISABLE_DEF_CNST_CHK ON
Каждое отдельное утверждение должно быть согласованным и т. Д. Независимо от того, находится ли оно в транзакции
Некоторые РСУБД допускают это (например, Oracle, Postgres, Interbase)
Connect
Существует запрос Microsoft Connect , созданный в 2006 году, запрашивающий эту функцию:
Возможность отложить проверку ограничений внешнего ключа до фиксации транзакции
Существуют различные сценарии типа «курица и яйцо», в которых было бы желательно отложить проверку ограничений ссылочной целостности до времени фиксации транзакции.
Разрешить отсрочку проверки ограничения ссылочной целостности до времени фиксации транзакции (как опция). Предложите предоставить опцию BEGIN TRANSACTION, которая указывает это.
Последний ответ от Microsoft пришел десятилетие назад:
Автор: Sameer [MSFT] 13.10.2006, 13:35
Привет, Грег,
Спасибо за отзыв. Мы знаем об этом и изучаем его в будущем выпуске.
Самер Верхедкар
SQL Engine
[MSFT]
Что говорит Microsoft за "уходи" .
SQL-92 определяет его
Функция была определена в июле 1992 года с SQL-92 . Пример синтаксиса будет:
BEGIN TRANSACTION
SET CONSTRAINTS ALL DEFERRED --applies only to the current transaction
INSERT Customers ...
INSERT Orders ...
UPDATE Customers ... --add the thing we were missing
COMMIT TRANSACTION