MySQL时间戳触发器

时间:2012-04-24 14:43:36

标签: mysql triggers timestamp

我正在尝试设置触发器,以在主表更新时在日志表中记录时间戳。我有一个名为cm的主表,并且有一个带有时间戳列的日志表。

日志表中的timestamp列设置如下:

ALTER TABLE log ADD COLUMN modified_timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

我尝试的触发器如下,但抛出此错误“错误代码1193.未知系统变量'modified_timestamp'

触发:

DELIMITER //
CREATE TRIGGER `ahrq cm`.`table_timestamp` BEFORE UPDATE ON `ahrq    cm`.`ahrq_inventory_all`
FOR EACH ROW begin

set log.modified_timestamp=CURRENT_TIMESTAMP();

end
//

有人能说清楚这个错误吗?

2 个答案:

答案 0 :(得分:1)

您的触发器应使用普通的SQL命令更新log表:

DELIMITER //
CREATE TRIGGER `ahrq cm`.`table_timestamp` BEFORE UPDATE ON `ahrq cm`.`ahrq_inventory_all`
FOR EACH ROW begin

INSERT INTO log (modified_timestamp) VALUES (CURRENT_TIMESTAMP());

end
//

答案 1 :(得分:0)

set用于设置变量值(用户,系统或存储的例程变量)。

要更新日志表中的字段,需要发出UPDATE查询,例如

UPDATE log SET modified_timestamp = CURRENT_TIMESTAMP() WHERE ...