2012-09-28 37 views
1

这里是我到目前为止的代码mysql如何时间戳唯一一个在同一个表列的更新

DELIMITER $$ 
    CREATE TRIGGER status AFTER UPDATE ON users 
     FOR EACH ROW BEGIN 
      IF NEW.status != OLD.status 
      THEN INSERT INTO users (status_change_date) 
      VALUES (NOW()); 
      ENDIF; 
END$$ 

DELIMITER; 

我们正在试图做的是当指定的字段改为更新字段与当前日期和保存该日期在status_change_date下的同一表中。上面的代码抛出MySQL的错误。它尖叫着我说它不能自称更新同一张表。任何帮助将不胜感激。

+0

可能重复[MySQL的更新时间戳“列 - 触发(HTTP:// stackoverflow.com/questions/2045745/mysql-update-timestamp-column-trigger) – Barmar

回答

1

我要修改同一个表,尝试使用BEFORE UPDATE触发,而不是AFTER UPDATE,就像这样:

DELIMITER $$ 
    CREATE TRIGGER status BEFORE UPDATE ON users 
     FOR EACH ROW BEGIN 
      IF NEW.status != OLD.status 
      THEN INSERT INTO users (status_change_date) 
      VALUES (NOW()); 
      ENDIF; 
END$$ 

DELIMITER; 
+0

感谢您的帮助。我们决定采取不同的方向,手动更新status_change_date,而不是自动执行。这也是出于其他原因。它允许信息在输入时被更新,以防在以前的日期更改状态,但不是。我将你的答案标记为正确的答案,以帮助你获得帮助。 – amaster