2010-03-06 52 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