代码之家  ›  专栏  ›  技术社区  ›  JD Isaacks

是否将字段设置为在更新时自动插入时间戳?

  •  6
  • JD Isaacks  · 技术社区  · 15 年前

    我有一张桌子 十二月 字段名 product_price 我想添加一个名为 price_updated_date . 是否可以设置该表以在 产品价格 字段已更新?

    如果没有,是否可以设置为在任何时候更新条目时插入当前时间戳?

    更新:

    在这里,使用触发器似乎是最好的选择。我刚接触触发器,在创建它时遇到了一些困难。这是我的代码:

    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 回复  |  直到 13 年前
        1
  •  10
  •   Vadyus    15 年前

    是的,在更新表后创建触发器

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

        2
  •  14
  •   Michał Powaga Mohamed Aslam    13 年前

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

    DEFAULT CURRENT_TIMESTAMP 
    ON UPDATE CURRENT_TIMESTAMP;
    
        3
  •  3
  •   Alex P    15 年前

    我注意到你在使用MySQL

    mysql timestamp字段的默认行为是在插入和更新时默认为now()。

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

    我知道这不取决于哪个列已经根据您的需要进行了更新,但对您或浏览此问题的其他人来说可能有一些用处。

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

        4
  •  2
  •   Michał Powaga Mohamed Aslam    13 年前

    每当运行更新语句时,请确保执行以下操作:

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

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

        5
  •  -2
  •   ObiWanKenobi    15 年前