小编Eas*_*ter的帖子

SQL NO CHECK FOREIGN KEY数据后,重新启用查询优化器

我有一个带有引用的外键约束的SQL Server 2012数据库 Countries.CountryID = States.CountryID

我需要重新创建Countries表,所以我从States表中删除这个FOREIGN KEY (否则它不允许我DROP国家)

在我这样做之后,我想重新创建FK,States但除非我这样指定,否则它不允许我NO CHECK:

ALTER TABLE States 
    WITH NOCHECK
    ADD CONSTRAINT FK_StatesCountries FOREIGN KEY (CountryID) REFERENCES Countries(CountryID) 
GO
Run Code Online (Sandbox Code Playgroud)

我起初并没有意识到有些国家的行CountryID没有匹配Countries.CountryID记录.显然WITH NOCHECK允许我毫无错误地继续前进.

现在SQLServer将此FK标记为"不受信任",MSDN表示通过检查所有约束来重新启用查询优化器.那么,为什么即使某些国家的CountryID无效,以下行也不会给我一个错误?

 ALTER TABLE States
      CHECK CONSTRAINT ALL
 GO
Run Code Online (Sandbox Code Playgroud)

我认为这应该会引起错误.

sql-server foreign-keys

16
推荐指数
1
解决办法
1万
查看次数

标签 统计

foreign-keys ×1

sql-server ×1