2014-01-31 34 views
0

比方說,我有兩個表:表項限制

info(id PRIMARY KEY, opendate NOT NULL, closedate) 
fileinfo(fileno PRIMARY KEY, id FOREIGN KEY REFERENCES info.id) 

我想允許新的條目進入FileInfo的只有info.closedate的對應值爲null。有沒有辦法做到這一點?

回答

0

您可以將一個觸發器附加到fileinfo表上,以在INSERT上運行,該INSERT在信息上查找閉合,並在非空時拋出錯誤。

編輯:增加了一個SQLServer觸發器的例子,它會做同樣的事情。按照MySQL語法進行編輯。

CREATE TRIGGER InsertFileInfo 
    ON fileinfo 
    AFTER INSERT 
AS 
BEGIN 

    declare @closedate DateTime ; 

    select @closedate = closedate from info where id in (select id from new); 

    if @closedate is not null 
    begin 
     raiserror ('CloseDate is not null', 16, 1); 
    end 
END 
+0

有在互聯網上的信息噸。從例如http://www.mysqltutorial.org/mysql-triggers.aspx –

+0

感謝您的幫助。由於我是mysql的新手,我很難爲這個觸發器編寫代碼。我查了一下你提到的網站上的信息(我實際上曾經看過),但我仍然不確定如何編碼。特別是我不知道如何引用信息表上的特定關閉值。如果你能給我提供一些示例代碼以便我可以開始,我將非常感激! –

+0

我沒有MySQL,但我已經用SQL Server之一修改了答案。您必須修改它以匹配MySQL語法。 –