2015-04-02 34 views
0

我有一個關於MySQL的問題觸發,說我有如下表:條件值

CREATE TABLE test (
    id INT(6), 
    value_1 INT(6), 
    value_2 INT(6), 
    values_were_set BOOL 
) 

現在,我每次值插入此表我想有一個觸發檢查,如果value_1value_2已被設置。如果是,則應將values_were_set設置爲true。

NULL值是允許的。

我該怎麼辦?在真正的表格中,我想檢查大約10列,所以我想不必使用一堆IF陳述。

也許最好在應用程序中執行它?

+0

如果你想要做的它帶有一個觸發器,它是一個'BEFORE INSERT'觸發器。我真的不明白爲什麼,你可以在SELECT期間總是確定'are_set'字段的值,通過查找空值 – 2015-04-02 06:43:33

+0

感謝pala_的輸入。是的,我知道這是可以在應用層檢查的,這就是它現在的工作方式。我只想看看是否可以直接在數據庫中完成它,這將使我們開始使用不同的應用程序到同一個數據庫時更容易。 – 2015-04-02 11:15:01

回答

0

然後觸發它是:

DELIMITER $$ 
CREATE TRIGGER value_check BEFORE INSERT ON test 
FOR EACH ROW 
BEGIN 
    IF NEW.value_1 IS NOT NULL AND NEW.value_2 IS NOT NULL THEN 
    SET NEW.values_were_set = 1; 
    ELSE 
    SET NEW.values_were_set = 0; 
    END IF; 
END; 
$$ 

不幸的是,是的,我想你會需要一個討厭的,如果在觸發/其他部分,如果你想檢查領域的多種組合

+0

太棒了,那正是我一直在尋找的!謝謝。 – 2015-04-02 15:34:53