2010-03-06 93 views

回答

2

是否有使用CHECK約束來執行數據驗證的方法。 ..

是的,這就是CHECK約束的用途:Im通過表建模無法完成數據驗證

...並以某種方式顯示未通過檢查約束的數據?

不,您提供的數據未能滿足CHECK約束要求時,您將從CHECK約束中返回的唯一信息是錯誤消息。這是由你來審查數據。

觸發器將是下一個可能的選項,有能力將嘗試的數據重定向到日誌記錄表。

2

您可以運行一個選擇,使用您的檢查約束中的約束定義的表上的邏輯。

返回的行將是那些不會通過驗證的行。

如果定義如下表和CHECK約束:

IF OBJECT_ID ('dbo.Vendors', 'U') IS NOT NULL 
DROP TABLE dbo.Vendors; 
GO 
CREATE TABLE dbo.Vendors 
    (VendorID int PRIMARY KEY, VendorName nvarchar (50), 
    CreditRating tinyint) 
GO 
ALTER TABLE dbo.Vendors ADD CONSTRAINT CK_Vendor_CreditRating 
    CHECK (CreditRating >= 1 AND CreditRating <= 5) 

您可以選擇行是這樣的:

SELECT VendorID 
FROM dbo.Vendors 
WHERE (CreditRating >= 1 AND CreditRating <= 5) 
+0

那麼,我想要的是在插入/更新操作後得到無效數據。 – Markus 2010-03-06 14:33:11

+1

如果CHECK約束失敗,將不會有插入/更新。 CHECK約束不會告訴你哪一點數據導致它失敗。在將代碼發送到數據庫之前,您需要在代碼中檢查它。 – Oded 2010-03-06 14:36:28