2010-11-15 4 views
3

Когда я правой кнопкой мыши на ограничение по умолчанию, и я прошу SQL Server, чтобы создать сценарий создания для него, он генерирует следующий код:Пожалуйста, объясните синтаксис SQLServer использует для создания проверочного ограничения

ALTER TABLE [dbo].[tblEventTurnJudgeStartValues] WITH NOCHECK ADD CONSTRAINT [tblEventTurnJudgeStartValues_ExecutionToggle] CHECK (([ExecutionToggle]=(1) OR [ExecutionToggle]=(0) OR [ExecutionToggle]=(-1))) 
GO 
ALTER TABLE [dbo].[tblEventTurnJudgeStartValues] CHECK CONSTRAINT [tblEventTurnJudgeStartValues_ExecutionToggle] 

Для запись, я понимаю первый оператор ALTER, но я не понимаю, что делает второй оператор alter. Попробовал google фразу «CHECK CONSTRAINT», но получил только хиты в синтаксисе ограничений добавления.

Спасибо.

Сет

обновление
Спасибо Джо за ваш ответ. Нашел эту ссылку, которая помогает.

http://blog.sqlauthority.com/2009/11/12/sql-server-disable-check-constraint-enable-check-constraint/

Я не знал, что вы могли бы включить и отключить ограничения. Круто!

Сет

ответ

3

Первый оператор создает ограничение, но так как он создается с NOCHECK, существующие данные не проверяются в момент создания.

Второе утверждение просто включает ограничение и технически избыточно.

Лично я бы предпочел, чтобы второе заявление было написано с помощью опции WITH CHECK, которая будет проверять все существующие данные против ограничения и будет препятствовать тому, чтобы ограничение становилось untrusted.

ALTER TABLE [dbo].[tblEventTurnJudgeStartValues] WITH CHECK CHECK CONSTRAINT [tblEventTurnJudgeStartValues_ExecutionToggle] 
+0

Джо, я думал, что это то, что он может сделать. Что делать, если данные не проходят тест ограничения. Что происходит тогда? Выключен ли первый запрос на изменение? –

+0

+1: Я всегда использовал 'WITH CHECK', чтобы включить отключенное ограничение –

+0

Joe: Вы говорите, что без второго оператора ограничение создается, но не применяется до второго оператора alter? И если вы используете WITH CHECK, и не все записи проходят тест, ограничение остается отключенным? –

 Смежные вопросы

  • Нет связанных вопросов^_^