首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >WITH NOCHECK CHECK约束与CHECK约束的区别

WITH NOCHECK CHECK约束与CHECK约束的区别
EN

Stack Overflow用户
提问于 2017-07-17 17:15:39
回答 2查看 17.4K关注 0票数 2

这些脚本之间有什么区别?

代码语言:javascript
运行
复制
ALTER TABLE Post_Send WITH NOCHECK CHECK CONSTRAINT [My_FOREIGN_KEY];  
GO

ALTER TABLE Post_Send CHECK CONSTRAINT [My_FOREIGN_KEY];
GO
EN

Stack Overflow用户

发布于 2017-07-17 18:05:07

CHECK CONSTRAINT启用约束。(是的,它应该是ENABLE。) WITH NOCHECK这样做时不检查现有数据。因此,令人困惑的语法WITH NOCHECK CHECK CONSTRAINT在不检查现有数据的情况下启用了约束。

来自the manual

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

由于您正在重新启用现有的约束,因此WITH NOCHECK是默认的,并且这两个语句执行的是完全相同的事情。WITH CHECK CHECK CONSTRAINT将重新启用约束,同时检查现有数据是否存在违规(并将外键标记为可信,以便在流程中进行优化,如果您绕过检查,则不会发生这种情况)。

票数 7
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45140239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档