我有桌子说table1有一个colum说checkColumn,
现在我想对字段checkColumn设置一个检查约束,它只允许另一个表中的数据表示某些条件的表2,
我试过这样,
ALTER TABLE table1
ADD CHECK (checkColumn=(select field1 from table2 where field2='ABC') ) //the select is not scalar
但是当我意识到它在检查条件下不允许子查询字符串时,我搜索了一下并且读了我应该使用外键,触发器或其他东西,但是真的不明白如何实现这里的例子,所以将其作为一个单独的问题发布。
答案 0 :(得分:7)
不幸的是,您无法将Sub Query插入Check约束的上下文中。但在这里我想给出建议,你可以使用任何触发器或功能,你可以使用 用于检查数据依赖性的外键约束 我想与函数分享一个例子。 e.g。
CREATE FUNCTION fn_Check_Rollnumber (
@Rollnumber INT
)
RETURNS VARCHAR(10)
AS
BEGIN
IF EXISTS (SELECT Rollnumber FROM Table_Student WHERE Rollnumber = @Rollnumber)
return 'True'
return 'False'
END
现在您可以在检查上下文中使用此功能,
ALTER TABLE Table_Fees
WITH CHECK ADD CONSTRAINT CK_RollCheck
CHECK (fn_Check_Rollnumber(Rollnumber) = 'True')