繁体   English   中英

MS SQL Server-外键约束中WITH CHECK的值是什么?

[英]MS SQL Server - What is the value of WITH CHECK in a foreign key constraint?

当我让SQL Server Management Studio为我生成一个表创建脚本时,外键约束与我编写它们的方式有些不同。

这是一个:

ALTER TABLE [dbo].[GeoBytesCountries]  
WITH CHECK 
ADD CONSTRAINT [FK_GeoBytesCountries_MapReferenceId] 
FOREIGN KEY ([MapReferenceId])
REFERENCES [dbo].[GeoBytesMapReferences] ([MapReferenceId])
GO

ALTER TABLE [dbo].[GeoBytesCountries] 
CHECK CONSTRAINT [FK_GeoBytesCountries_MapReferenceId]
GO

我将编写此外键约束而没有“ WITH CHECK”和第二个“ CHECK CONSTRAINT”语句,并希望获得相同的功能。

当您为表编写外键约束时,有人可以向我解释使用“ WITH CHECK”和单独的“ CHECK CONSTRAINT”语句的值吗?

还是下面的代码在功能上完全等同于上面的代码?

ALTER TABLE [dbo].[GeoBytesCountries]  
ADD CONSTRAINT [FK_GeoBytesCountries_MapReferenceId] 
FOREIGN KEY ([MapReferenceId]) 
REFERENCES [dbo].[GeoBytesMapReferences] ([MapReferenceId])
GO

以我的看法,两步方法允许您至少在假设with check部分失败的情况下至少保留更多“不良”数据。 也就是说,从那时起您的约束将存在并适用于DML,但是您可能必须对现有数据进行一些清理以使其成为可信约束。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM