代码之家  ›  专栏  ›  技术社区  ›  Seth Spearman

请解释SQLServer用于创建check约束的语法

  •  3
  • Seth Spearman  · 技术社区  · 15 年前

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

    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”短语,但只找到了add CONSTRAINT语法。

    谢谢。

    赛斯

    更新
    谢谢乔的回答。找到了有帮助的链接。

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

    我不知道您可以启用和禁用约束。太酷了!

    赛斯

    1 回复  |  直到 15 年前
        1
  •  3
  •   Community Mohan Dere    7 年前

    第一个语句创建约束,但是由于它是用NOCHECK创建的,所以在创建时没有验证现有数据。

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

    就我个人而言,我希望第二个声明是用 WITH CHECK 选项,它将验证所有现有数据对约束的约束,并防止约束变为约束。 untrusted .

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