Fire a trigger after the update of specific columns in MySQL

后端 未结 3 1573
长情又很酷
长情又很酷 2020-12-14 06:32

In MySQL, I want to fire a trigger after the update of specific columns.

I know how to do it in Oracle and DB2:

CREATE  TRIGGER  myTrigger
A         


        
相关标签:
3条回答
  • 2020-12-14 06:36

    You can't specify only to fire on specific column changes. But for a record change on a table you can do

    delimiter |
    CREATE  TRIGGER  myTrigger AFTER UPDATE ON myTable
    FOR EACH ROW
    BEGIN
       ...
    END
    |
    delimiter ;
    

    In your trigger you can refer to old and new content of a column like this

    if NEW.column1 <> OLD.column1 ...
    
    0 讨论(0)
  • 2020-12-14 06:47

    As a solution, I did like that:

    CREATE  TRIGGER  myTrigger
    AFTER UPDATE  ON myTable
    FOR EACH ROW
    BEGIN
    IF NEW.myColumn1 <> OLD.myColumn1 || NEW.myColumn2 <> OLD.myColumn2
    then
    
    .....
    
    END IF
    END
    
    0 讨论(0)
  • You can't trigger on a particular column update in SQL. It is applied on a row.

    You can put your condition for columm in your trigger with an IF statement, as below:

    DELIMITER //
    CREATE TRIGGER myTrigger AFTER UPDATE ON myTable
    FOR EACH ROW
    BEGIN
       IF !(NEW.column1 <=> OLD.column1) THEN
          --type your statements here
       END IF;
    END;//
    DELIMITER ;
    
    0 讨论(0)
提交回复
热议问题