ALTER TABLE [dbo]。[MyTable] CHECK CONSTRAINT [FK_MyTable_SomeCol]

时间:2012-04-02 10:11:37

标签: tsql

如果我使用外键编写表脚本,它看起来像这样:

GO
ALTER TABLE [dbo].[MyTable]  WITH CHECK ADD  CONSTRAINT [FK_MyTable_SomeCol] FOREIGN KEY([SomeCol])
REFERENCES [dbo].[MyOtherTable] ([SomeCol])
GO
ALTER TABLE [dbo].[MyTable] CHECK CONSTRAINT [FK_MyTable_SomeCol]
GO

ALTER TABLE [dbo].[MyTable] CHECK CONSTRAINT [FK_MyTable_SomeCol])的第二部分是什么?

2 个答案:

答案 0 :(得分:19)

这是约束编写方式的工件 - 虽然没有必要指定这些选项(因为它们是新约束的默认值),同一个生成器也可以生成完全相同的NOCHECK选项方式。

ALTER TABLE的{​​p> Documentation表示CHECK / NOCHECK的两种不同用途:

  

WITH CHECK | WITH NOCHECK

     

指定是否针对新添加或重新启用的FOREIGN KEYCHECK约束验证表中的数据。如果未指定,则假定新约束为WITH CHECK,并且假定重新启用约束为WITH NOCHECK

  

{ CHECK | NOCHECK } CONSTRAINT

     

指定启用或禁用constraint_name。

所以一个选项是“检查表格的当前内容”,另一个选项是“在添加时验证新数据”。

答案 1 :(得分:0)

这是为您的表格实施referential integrity的方法。