Пока SQL Server не поддерживает их. В чем проблема, которую вы решаете?
OT: Есть IMHO немало вещей, которые SQL Server не поддерживает, но имеет смысл в корпоративной среде:
Все эти мелочи делают многие из ссылочной целостности и транзакционных функций, которые вы ожидаете от полноразмерной СУБД, почти бесполезной в SQL Server. Например, поскольку отложенные ограничения не поддерживаются, понятие «транзакция» как внешне согласованное подразделение работы частично отрицается, единственное жизнеспособное решение - за исключением некоторых грязных обходных решений - заключается в том, чтобы вообще не определять ограничения ссылочной целостности. Я бы ожидал, что естественное поведение транзакции заключается в том, что вы можете работать внутри нее в порядке и порядке операций, которые вам нравятся, и система будет следить за тем, чтобы она была согласованной в момент ее совершения. Подобные проблемы возникают из-за ограничения, что ограничение ссылочной целостности с ON DELETE CASCADE может быть определено только таким образом, что только одно ограничение может привести к каскадному удалению объекта. Это действительно не подходит для большинства реальных сценариев.
Очевидно нет.
Я обнаружил около пяти разных сообщений в блогах, говорящих, что SQLServer (в разных версиях) не поддерживает Deferrable Constraints.
С другой стороны, я также нашел сообщение, которое пытается воспроизвести эту функцию, используя «постоянные вычисленные столбцы» (прокрутите до последней записи), но предостерегайте emptor
Похоже, что проблема заключается в том, что SQL не поддерживает то, что Date и Darwen называют «множественным назначением». Ответ SQL Server на это был «отложенными ограничениями», которые SQL Server не поддерживает. Ограничение SQL Server FK или CHECK может быть помечено NOCHECK, но это не совсем то же самое. Подробнее см. MSDN: ALTER TABLE (Transact-SQL) .
Если у вас есть собственный уровень ORM, одним из решений вашей проблемы может быть разделение обновления объекта с помощью эталонного обновления по логике вашего уровня ORM. Затем ваш ORM будет работать с транзакциями на основе изменения клиентской стороны несколькими шагами:
Это должно решить вашу проблему, поскольку все ссылки на объекты существуют в любое время, когда установлено значение внешнего ключа ...