2011-03-14 192 views
1

我有一個表在我的數據庫,我做了一個:腳本表作爲>創建於>查詢編輯器和我的一些列有這樣的代碼:SQL Server的檢查約束

ALTER TABLE [dbo].[TableName] WITH CHECK ADD CONSTRAINT [ConstraintName] FOREIGN KEY([ColumnName]) 
REFERENCES [dbo].[ForeignKeyTable] ([ColumnName]) 
GO 
ALTER TABLE [dbo].[TableName] CHECK CONSTRAINT [ConstraintName2] 
GO 

什麼第二約束做?表中的其他列只有第一個約束。

回答

3

第二個約束打開(激活)檢查約束。它只是來自SSMS的模板代碼

可以在激活或不激活它的情況下生成create check constraints片段(例如nocheck) - 因此它本身就是2片段中的一個片段。因爲你選擇了約束最終激活,所以SSMS跟隨着激活,而不是真的關心它是否已經激活。它並沒有真正受傷,只是SSMS所做的一切

+0

我明白了,以防萬一第一個被創建並且沒有被設置爲激活,第二個被捕獲? – William 2011-03-14 21:23:35

+0

@威廉是的。 SSMS中的腳本生成片段很多,只是將各個模板放在一起。 – RichardTheKiwi 2011-03-14 21:25:53