我正在向我的多个表添加类型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
答案 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
适用于DATETIME
和TIMESTAMP
字段(作为默认值)
您可以在MySQL工作台中将以上内容用作SQL命令或默认值