MySQL'更新时间戳'列 - 触发器

时间:2010-01-11 23:40:20

标签: mysql triggers

我正在向我的多个表添加类型tsu的列DATETIME(时间戳更新)。

我需要编写BEFORE UPDATE个触发器,将列更新为CURRENT_TIMESTAMP(),但我无法做到正确。尝试:

DELIMITER $$
CREATE
    TRIGGER `cams`.`tsu_update_csi` BEFORE UPDATE
    ON `cams`.`csi`
    FOR EACH ROW BEGIN
        UPDATE csi SET tsu = CURRENT_TIMESTAMP WHERE csi_code = OLD.csi_code;
    END$$
DELIMITER ;

有人能指出我正确的方向吗? MTIA

4 个答案:

答案 0 :(得分:15)

好的,试试这个:

DELIMITER $$ CREATE  
    TRIGGER `cams`.`tsu_update_csi` BEFORE UPDATE  
    ON `cams`.`csi`  
      FOR EACH ROW BEGIN  
        SET NEW.tsu = CURRENT_TIMESTAMP;   
END$$ DELIMITER ;

答案 1 :(得分:9)

如果可以将字段定义为时间戳,则可以使用以下内容:

ts2 TIMESTAMP DEFAULT CURRENT_TIMESTAMP
              ON UPDATE CURRENT_TIMESTAMP);

答案 2 :(得分:1)

不知道它是否适合您,但您始终可以将其设为TIMESTAMP字段而没有默认值--MySQL会自动将表中定义的第一个此类字段的值设置为每次更新的当前时间戳。

答案 3 :(得分:0)

ts2 CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP适用于DATETIME和TIMESTAMP字段,适用于一个和多个字段

因此您可以使用创建日期的CURRENT_TIMESTAMP(作为默认值)

和日期更新的CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP适用于DATETIMETIMESTAMP字段(作为默认值)

您可以在MySQL工作台中将以上内容用作SQL命令或默认值