簡體   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