2012-04-27 96 views
16

我們可以使用特定列的更新MySQL的觸發器,它在更新同一個表(同一行)的另一列MySQL的觸發器「對列的更新」

create trigger my_trigger 
BEFORE UPDATE OF col1, col2 ON TABLE_NAME 
for each row 
set NEW.col3 = NEW.col3 +1; 

我試着用UPDATE OF col1, col2上面的代碼。它不適用於MySQL。什麼是正確的語法,有人可以給我一些例子。

回答

20

您不能指定觸發將要在具體列上的更新只運行(一UPDATE影響整個記錄),但你可以測試列已觸發的內更新:

DELIMITER ;; 

CREATE TRIGGER my_trigger BEFORE UPDATE ON TABLE_NAME FOR EACH ROW 
IF NOT (NEW.col1 <=> OLD.col1 AND NEW.col2 <=> OLD.col2) THEN 
    SET NEW.col3 = NEW.col3 + 1; 
END IF;; 

DELIMITER ; 
+0

謝謝,但這只是特定於MySQL? – cldy1020 2012-04-28 01:12:52

+0

@ ms1020:您還有哪些其他關係型數據庫管理系統? – eggyal 2012-04-28 06:47:00

+4

現在我只能使用mysql。只是想知道是否有其他RDBMS有這個限制。我知道ORACLE支持列更新。 – cldy1020 2012-05-01 02:58:15