2017-08-24 24 views
0

我想在更新記錄後更新一列「狀態」,並且只有在四個特定列不爲空時。這是我的觸發器,但它不能正常工作。更新後的MySQL觸發器 - 如果列不爲空,則更新

CREATE TRIGGER `after_thesis_rate_upade` 
AFTER UPDATE ON `theses` 
FOR EACH ROW IF (new.promoterRate IS NOT NULL AND new.promoterNote IS NOT NULL AND new.reviewerNote IS NOT NULL AND new.reviewerRate IS NOT NULL) 
THEN 
UPDATE theses SET new.status="Oceniona" WHERE old.id=new.id; 
END IF; 

當我更新這些列中的狀態欄仍是此相同,在嘗試變化值在MySQL phpMyAdmin的拋錯誤「無法改變,因爲有設置觸發器」。你能告訴我什麼是錯的嗎?

回答

0

您不會修改在觸發器中觸發觸發器的表;只需在NEW.fieldnames上使用SET聲明即可。

IF some_condition THEN 
    SET NEW.blah2 = 'something or other'; 
END IF; 
+0

我做了這個SET new.status = 「Oceniona」;它會拋出錯誤#1362 - 在觸發後不允許更新NEW行 –

+0

可能應該是一個'BEFORE UPDATE'觸發器然後; 'AFTER'意味着數據已被寫入。 'SET OLD.status'_might_可以在'AFTER UPDATE'中工作,但是我沒有處理觸發器就沒有足夠的可以確定而不需要自己嘗試。 – Uueerdo

+0

好吧,只是看觸發文檔的另一個問題,它看起來只有NEW字段可以設置,並且只在BEFORE [INSERT | UPDATE]觸發器。 – Uueerdo