MySQL 中的 UPDATE() 函數用于判斷兩個表達式是否相等。如果相等,則返回 1,否則返回 0。
UPDATE(active, inactive) SET status = IF(UPDATE(active), 'Active', 'Inactive') WHERE id = 1;
上面的代碼中,如果 active 字段或 inactive 字段被更新,則 status 字段根據他們的值被更新。如果 active 被更新,status 的值為 'Active',如果 inactive 被更新,status 的值為 'Inactive'。
一個表可以同時具有多個觸發器,更新操作也可以同時激活多個觸發器。在這種情況下,觸發器的執行順序由 AFTER 關鍵字之后的列表中聲明的順序決定。
UPDATE() 函數還可以與觸發器一起使用,以便在記錄被更新時自動執行必要的操作:
CREATE TRIGGER upd_check BEFORE UPDATE ON account FOR EACH ROW BEGIN IF NEW.amount< OLD.amount THEN SET NEW.amount = OLD.amount; END IF; END;
上面的代碼中,當嘗試更新 account 表中的行時,觸發器 upd_check 將檢查新創建的行(存儲在 NEW 變量中)是否低于舊值(存儲在 OLD 變量中),如果是,則將新值設置回舊值。