【问题标题】:How do I prevent a prepared statement from updating TIMESTAMP column?如何防止准备好的语句更新 TIMESTAMP 列?
【发布时间】:2016-07-19 00:08:30
【问题描述】:

我的表中有一个 TIMESTAMP 列,用于存储用户的注册日期,当我从 Java 应用程序注销时,我有一个准备好的语句 REPLACE 查询更新除 TIMESTAMP 之外的所有内容。但是,TIMESTAMP 的默认值是 CURRENT_TIMESTAMP,这使它设置为我不想要的当前时间。如果我将默认值设置为 null,它将保存为 NULL,如果我不设置默认值,则会引发 SQL 异常。

如何使准备好的语句完全忽略该列?

【问题讨论】:

  • REPLACE 不会更新。它删除旧行并插入一个新行,该行获取默认值。您应该为此使用 UPDATE。
  • 感谢您的帮助! :)

标签: java mysql database


【解决方案1】:

如果您希望时间戳保持其当前值,则必须使用 UPDATE(而不是 REPLACE)或让 REPLACE 触发器执行读取-修改-写入,获取时间戳的当前值,然后将其写入返回新记录。

【讨论】:

  • 感谢您的帮助! :)
猜你喜欢
  • 2012-01-05
  • 2011-08-01
  • 1970-01-01
  • 2015-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多