如何防止准备好的语句更新 TIMESTAMP 列?
Posted
技术标签:
【中文标题】如何防止准备好的语句更新 TIMESTAMP 列?【英文标题】:How do I prevent a prepared statement from updating TIMESTAMP column? 【发布时间】:2016-07-19 00:08:30 【问题描述】:我的表中有一个 TIMESTAMP 列,用于存储用户的注册日期,当我从 Java 应用程序注销时,我有一个准备好的语句 REPLACE 查询更新除 TIMESTAMP 之外的所有内容。但是,TIMESTAMP 的默认值是 CURRENT_TIMESTAMP,这使它设置为我不想要的当前时间。如果我将默认值设置为 null,它将保存为 NULL,如果我不设置默认值,则会引发 SQL 异常。
如何使准备好的语句完全忽略该列?
【问题讨论】:
REPLACE 不会更新。它删除旧行并插入一个新行,该行获取默认值。您应该为此使用 UPDATE。 感谢您的帮助! :) 【参考方案1】:如果您希望时间戳保持其当前值,则必须使用 UPDATE(而不是 REPLACE)或让 REPLACE 触发器执行读取-修改-写入,获取时间戳的当前值,然后将其写入返回新记录。
【讨论】:
感谢您的帮助! :)以上是关于如何防止准备好的语句更新 TIMESTAMP 列?的主要内容,如果未能解决你的问题,请参考以下文章