检查约束自定义消息

时间:2010-03-06 14:24:22

标签: sql sql-server tsql

有没有办法在t-sql中使用CHECK约束执行数据验证,并以某种方式显示未通过检查约束的数据?

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:2)

  

有没有办法使用CHECK约束来执行数据验证...

是的,这就是CHECK约束的用途:实现无法通过表建模完成的数据验证

  

...并以某种方式显示未通过检查约束的数据?

不,当提供的数据无法满足CHECK约束要求时,您将从CHECK约束中获取的唯一信息是错误消息。由您来审核数据。

触发器将是下一个可能的选项,可以将尝试的数据重定向到表以进行记录。