構文

2012-04-27 5 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; 

Iは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

+0

@ ms1020:その他のRDBMSに興味がありますか? – eggyal

+4

今はmysqlのみ使用できます。他のRDBMSにこの制限があるかどうかを知りたかっただけです。 ORACLEは列の更新をサポートしています。 – cldy1020

関連する問題