2012-05-28 82 views
2

我一直在比較數據庫使用vs 2010計劃比較工具,它產生了一些不明確的東西。例如,在腳本結尾有這樣的說法:SQL服務器:這個SQL語句意味着什麼

ALTER TABLE [dbo].[My_table] WITH CHECK CHECK CONSTRAINT [FK_FOREIGN_ID]; 

任何人都可以解釋這是什麼意思?

回答

3

這意味着現有數據應該在添加時根據約束進行檢查。

未能使CHECK CHECK離開您的約束untrusted並且它們不能被查詢優化器使用。

1

告訴SQL Server驗證新行的約束。該計數器示例將使用WITH NOCHECK臨時禁用對新行的驗證檢查。

ALTER TABLE (Transact-SQL) (WITH CHECK | WITH NOCHECK)

+0

語法是'[WITH {CHECK | NOCHECK}] {檢查| NOCHECK} CONSTRAINT'。你的答案解釋了一半。挖另一個! –

+0

@MartinSmith - 我想BOL唯一留下的就是明確提到約束是不可信的。它的確如此,但是以一種詳細的方式:*當添加約束時,被WITH NOCHECK抑制的任何約束違規可能導致將來的更新失敗,如果它們用不符合約束的數據更新行。*即,不可信。 – Thomas