我有一个名为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行的''附近使用正确的语法
答案 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)