我有一个问题,希望有人能够提供帮助。
我正在尝试编写一个触发器,它采用日期时间戳并将日期放入新列中。但同样,如果不同列中的值等于 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
最佳答案
多语句触发器需要在其“主体”周围使用 BEGIN 和 END,并且通常在其声明周围覆盖 DELIMITER。
示例/模板:
DELIMITER $$
CREATE TRIGGER [blah blah]
BEGIN
[do stuff]
END$$
DELIMITER ;
或者,对于您的具体情况,我前几天注意到一个答案,其中有一个我忽略的可能性;您可以在 SET 语句中设置多项内容:
SET NEW.date = LEFT(NEW.entrydate, 10)
, NEW.connect_ip = IF(NEW.connect_ip = "1.2.3.4", "0.0.0.0", "1.2.3.4")
;
关于mysql - 触发器中的多个命令(更新具有不同条件的多个列),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38884234/