如果我使用外键编写表脚本,它看起来像这样:
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]
)的第二部分是什么?
答案 0 :(得分:19)
这是约束编写方式的工件 - 虽然没有必要指定这些选项(因为它们是新约束的默认值),同一个生成器也可以生成完全相同的NOCHECK
选项方式。
ALTER TABLE
的{p> Documentation表示CHECK
/ NOCHECK
的两种不同用途:
WITH CHECK | WITH NOCHECK
指定是否针对新添加或重新启用的
FOREIGN KEY
或CHECK
约束验证表中的数据。如果未指定,则假定新约束为WITH CHECK
,并且假定重新启用约束为WITH NOCHECK
。
和
{ CHECK | NOCHECK } CONSTRAINT
指定启用或禁用constraint_name。
所以一个选项是“检查表格的当前内容”,另一个选项是“在添加时验证新数据”。
答案 1 :(得分:0)
这是为您的表格实施referential integrity的方法。