首页  >  问答  >  正文

如何更新"last_dt"列的值,当使用"UPDATE"或"INSERT IGNORE INTO ~ ON DUPLICATE KEY UPDATE ~"语句时

last_dt列是数据最后更改的日期。它与插入日期的管理方式不同。插入日期由create_dt管理。

我只想在除了update_dt列之外的其他列发生更改时,才更改更新日期的值。

所以gpt给了我这个:

UPDATE your_table
SET column1 = %s, column2 = %s, column3 = %s, update_date = IF(
    column1 <> %s OR column2 <> %s OR column3 <> %s,
    NOW(), update_date
)
WHERE id = %s

但我认为这个方法有点奇怪。我实际测试过,发现有错误。也有可能是我代码写错了。

有没有更好的方法?gpt提供的答案是正确的吗?我认为很多数据库管理员都解决过同样的问题。我问这个问题是因为我找不到合适的答案。

P粉633075725P粉633075725399 天前800

全部回复(1)我来回复

  • P粉659518294

    P粉6595182942023-09-17 11:25:31

    我认为我必须使用这个

    `date`    TIMESTAMP      NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

    回复
    0
  • 取消回复