2012-12-18 129 views
4

試圖執行第一個觸發器,只有當數據是新的時,纔會將一個表的值插入另一個表中。下面是我的代碼:MySQL觸發器:IF ELSE錯誤

BEGIN 
    DECLARE email VARCHAR(30); 
    INSERT INTO data_audit SET data_audit_id = OLD.id; 
    IF (NEW.email = OLD.email) THEN 
    email = NULL; 
    ELSE 
    email = OLD.email; 
    END IF; 
    UPDATE corporate_audit SET email = email WHERE corporate_audit_id = last_insert_id(); 
END 

我收到以下錯誤:

您的SQL語法錯誤;檢查與您的MySQL服務器版本相對應的手冊,以獲得在'= NULL; ELSE email = OLD.email; END IF; UPDATE corporate_audit SET「第5行

當我沒有任何IF-THEN塊和存儲OLD.email執行代碼那麼它只是插入新的ID在審覈表中,但不更新領域。 請指引我

+0

沒有它不工作 – Volatil3

回答

6

你缺少SET

IF (NEW.email = OLD.email) THEN 
     SET email = NULL; 
    ELSE 
     SET email = OLD.email; 
    END IF; 
+2

真棒。多謝兄弟。我真的很喜歡我的無私幫助的Stackoverflow家族。 – Volatil3

+0

不客氣! –

+0

對不起,我再次打擾你。由於我正在使用AFTER UPDATE觸發器,因此不會讓我更新正在觸發的表的列值。 – Volatil3