我有一個IsDirty列表,我想更新一行時爲「1」,但我也希望能夠明確地將IsDirty標誌設置回「0」。所以,我創建了一個觸發器:MySQL更新之前觸發益智遊戲
FOR EACH ROW
BEGIN
IF NEW.IsDirty = 0 AND OLD.IsDirty=1 THEN
SET NEW.IsDirty = 0;
ELSE SET NEW.IsDirty = 1;
END IF;
END;
有了這個觸發器,更新任何列IsDirty列設置爲1,而我也可以「UPDATE TABLE_NAME SET IsDirty = 0其中xxx = 123」 - 偉大工程轉IsDirty 「關」。但是如果我在一行中執行了兩次(「UPDATE table_name SET IsDirty = 0 WHERE xxx = 123」),它會再次將IsDirty設置爲1。再次做它,將其設置爲0.然後來回切換,每次切換。看着我的觸發器,我可以看到如何發生。所以我改成了這樣:
FOR EACH ROW
BEGIN
IF NEW.IsDirty = 0 AND OLD.IsDirty=1 THEN
SET NEW.IsDirty = 0;
ELSEIF NEW.IsDirty = 0 AND OLD.IsDirty=0 THEN
SET NEW.IsDirty = 0;
ELSE SET NEW.IsDirty = 1;
END IF;
但現在更新比IsDirty其他任何列不再設置IsDirty爲1來設置它的唯一方法1,現在是明確更新IsDirty列。
我在做什麼錯?我只想在列更新時打開IsDirty,並且能夠將其關閉,甚至連續兩次關閉。
感謝您的幫助!