我正在查看运行以下语句,该语句将创建一个FK约束。
ALTER TABLE Table2 WITH CHECK ADD
CONSTRAINT FK_Table2_Table1 FOREIGN KEY (SID) REFERENCES Table1 (SID);
(1)我的问题是:WITH CHECK
代表什么?
我无法在MSDN官方网站上轻松找到答案。
(2)你能指点我一些官方文件吗? (在WITH CHECK和其他选项上 在添加FK约束时可用)?
答案 0 :(得分:4)
你可以在这里找到答案:http://technet.microsoft.com/en-us/library/ms190273(v=sql.105).aspx
指定是否针对新添加或重新启用的FOREIGN KEY或CHECK约束验证表中的数据。如果未指定,则假定对于新约束使用WITH CHECK,并且对于重新启用的约束假定使用WITH NOCHECK。
如果您不想针对现有数据验证新的CHECK或FOREIGN KEY约束,请使用WITH NOCHECK。除极少数情况外,我们不建议这样做。将在所有后续数据更新中评估新约束。添加约束时由WITH NOCHECK抑制的任何约束违规可能会导致将来更新失败,如果他们使用不符合约束的数据更新行。
查询优化器不考虑使用NOCHECK定义的约束。在使用ALTER TABLE WITH CHECK CHECK CONSTRAINT ALL重新启用它们之前,将忽略此类约束。
答案 1 :(得分:1)
WITH CHECK | WITH NOCHECK指定是否针对新添加或重新启用的FOREIGN KEY或CHECK约束验证表中的数据。如果未指定,则假定WITH CHECK为new 对于重新启用的约束,假设为WITH NOCHECK。