【问题标题】:MySQL Timestamp triggerMySQL时间戳触发器
【发布时间】:2012-04-24 14:43:35
【问题描述】:

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

日志表中的时间戳列设置如下:

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
//

谁能解释这个错误?

【问题讨论】:

    标签: mysql triggers timestamp


    【解决方案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
    //
    

    【讨论】:

    • 谢谢,成功创建了触发器,但是当我在数据库中运行插入时,日志表中没有任何记录。
    • 意识到自己的错误,我需要另一个“插入”触发器。感谢您的帮助。
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-29
      • 2014-09-30
      • 1970-01-01
      • 2019-03-08
      • 2011-01-21
      相关资源
      最近更新 更多