触发器中的多个命令(更新具有不同条件的多个列)

时间:2016-08-10 21:57:21

标签: mysql triggers mysql-error-1064 database-trigger

我有一个问题,我希望那里的人能够提供帮助。

我试图编写一个触发器,它接受日期时间戳并将日期放入新列。但同样,如果不同列中的值等于x,则将其替换为y。

我可以让个别陈述起作用(例如,如果我只是单独使用日期代码或替换代码,它可以正常工作),但我无法让它们在同一个触发器中工作。

SET NEW.date = LEFT(NEW.entrydate, 10);
IF 
    (NEW.connect_ip = "1.2.3.4") 
    THEN SET 
    NEW.connect_ip = "0.0.0.0";
    END IF

1 个答案:

答案 0 :(得分:1)

多语句触发器需要在" body"周围进行BEGIN和END,并且通常在其声明周围覆盖DELIMITER。

实施例/模板:

ode/src

或者,就你的具体情况而言,前几天我注意到了一个我忽略的可能性的答案;你可以在SET语句中设置多个东西:

DELIMITER $$

CREATE TRIGGER [blah blah]
BEGIN
   [do stuff]
END$$

DELIMITER ;