簡體   English   中英

將來自另一個表的數據放入檢查約束中

[英]Having data from another table put in into check constraint

我有桌子說table1有一個colum說checkColumn,

現在我想對字段checkColumn設置一個檢查約束,它只允許另一個表中的數據表示某些條件的表2,

我試過這樣的,

ALTER TABLE table1
ADD CHECK (checkColumn=(select field1 from table2 where field2='ABC') ) //the select is not scalar

但是當我意識到在檢查條件下它不允許子查詢字符串時,我搜索了一下並且讀了我應該使用外鍵,觸發器或其他東西,但是我真的不明白如何在這里實現這些示例,所以將此作為單獨的問題發布。

遺憾的是,您無法將Sub Query插入Check約束的上下文中。 但是在這里我想給出建議,你可以使用任何觸發器或函數,你可以使用外鍵約束來檢查數據依賴性我想與函數共享一個例子。 例如

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')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM