设置字段以在UPDATE上自动插入时间戳?

时间:2010-11-22 15:25:14

标签: mysql triggers

我有一个名为product_price DEC 字段的表格,我想添加一个名为price_updated_date的字段。有没有办法将表设置为在product_price字段更新后自动插入当前时间戳?

如果没有,是否有办法将其设置为在条目更新时插入当前时间戳?

更新

似乎使用触发器是最好的选择。我是触发器的新手并且在创建它时遇到了一些麻烦。这是我的代码:

CREATE TRIGGER price_update
AFTER UPDATE ON cart_product
FOR EACH ROW
IF(OLD.product_price != NEW.product_price)
THEN
UPDATE cart_product 
SET price_updated_date = CURDATE()
WHERE product_id = NEW.product_id

这给了我这个错误:

  

#1064 - 您的SQL语法出错;检查与MySQL服务器版本对应的手册,以便在第8行的''附近使用正确的语法

5 个答案:

答案 0 :(得分:14)

为什么不将该字段的属性设置为:

DEFAULT CURRENT_TIMESTAMP 
ON UPDATE CURRENT_TIMESTAMP;

答案 1 :(得分:10)

是,在你的桌子上更新后创建触发器

CREATE TRIGGER price_update AFTER UPDATE on _table_ FOR EACH ROW UPDATE _table_ SET price_updated_date = CURTIME() where id=NEW.id

答案 2 :(得分:3)

我注意到你正在使用MySQL

MySQL时间戳字段的默认行为是在插入时和更新时默认为NOW()

http://dev.mysql.com/doc/refman/5.0/en/timestamp.html

我知道这并不取决于您所需要更新的列,但可能对您或浏览此问题的其他人有用。

这是一个5秒的工作 - 只需添加一个时间戳字段&嘿presto

答案 3 :(得分:2)

无论何时运行更新语句,请确保执行以下操作:

UPDATE table SET `product_price` = 'whatever', price_updated_date = NOW()

当您更改行时,这将始终插入当前日期/时间。

答案 4 :(得分:-2)