有没有办法在t-sql中使用CHECK约束执行数据验证,并以某种方式显示未通过检查约束的数据?
答案 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约束中获取的唯一信息是错误消息。由您来审核数据。
触发器将是下一个可能的选项,可以将尝试的数据重定向到表以进行记录。