3

当我右键单击默认约束并要求 SQL Server 为其创建 CREATE 脚本时,它会生成以下代码:

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 语句的作用。试图用谷歌搜索“CHECK CONSTRAINT”短语,但只找到了添加约束语法。

谢谢。

赛斯

更新
感谢乔的回答。找到这个有帮助的链接。

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

我不知道您可以启用和禁用约束。凉爽的!

赛斯

4

1 回答 1

3

第一条语句创建约束,但由于它是使用 NOCHECK 创建的,因此在创建时不会验证现有数据。

第二个语句只是打开约束并且在技术上是多余的。

就个人而言,我更喜欢使用WITH CHECK选项编写第二个语句,这将根据约束验证所有现有数据,并防止约束变为untrusted

ALTER TABLE [dbo].[tblEventTurnJudgeStartValues] WITH CHECK CHECK CONSTRAINT [tblEventTurnJudgeStartValues_ExecutionToggle]
于 2010-11-15T20:22:37.863 回答