Получение вывода «WITH CHECK» в сценарии SQL с использованием проекта базы данных SQL Server VS2010? - PullRequest
0 голосов
/ 18 августа 2011

У меня есть ограничение внешнего ключа, которое я добавил в проект базы данных SQL Server VS2010, который я изменил, чтобы указать «WITH CHECK» в ограничении.

ALTER TABLE [dbo].[Foo] WITH CHECK
ADD CONSTRAINT [FK_FooBar] 
FOREIGN KEY ([BarKey])
REFERENCES [dbo].[Bar] ([Key]) 

В вывод .sql из сгенерированной схемы вставлено «WITH NOCHECK». Кажется, это по умолчанию, если вы вообще ничего не указываете. Файл .dbschema, сгенерированный для проекта, не определяет CHECK или NOCHECK, поэтому я немного запутался, откуда он берется.

Кто-нибудь знает, как это сделать?

Приветствия

1 Ответ

3 голосов
/ 10 октября 2011

Rasta

Когда вы создаете новое ограничение, WITH CHECK является значением по умолчанию, поэтому .dbschema не должно указывать это для вас. http://msdn.microsoft.com/en-us/library/ms190273.aspx

Посмотрев файл .sql, созданный для моего проекта базы данных, я обнаружил, что мои внешние ключи также имеют WITH NOCHECK при создании. Это сделано для предотвращения нарушений ограничений до тех пор, пока не будет создана вся структура. Последние несколько строк файла .sql, сгенерированного для вас, должны быть проверены ваши внешние ключи теперь, когда структура завершена. Для приведенного выше примера они выглядят так:

ALTER TABLE [dbo].[Foo] WITH CHECK CHECK CONSTRAINT [FK_FooBar];

Это должно привести к тому, что файл .sql даст желаемые результаты.

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