【发布时间】:2019-10-09 02:39:52
【问题描述】:
我有一个名为test_table 的表,如下所示:
https://ibb.co/QN8f328
我为 updated_dt 列设置的更新事件是 CURRENT_TIMESTAMP。
但是当新行插入到表中时,updated_dt 列的值没有变化,也没有CURRENT_TIMESTAMP 值,像这样
https://ibb.co/Jvb7zcw
出了什么问题?感谢您的帮助
【问题讨论】:
我有一个名为test_table 的表,如下所示:
https://ibb.co/QN8f328
我为 updated_dt 列设置的更新事件是 CURRENT_TIMESTAMP。
但是当新行插入到表中时,updated_dt 列的值没有变化,也没有CURRENT_TIMESTAMP 值,像这样
https://ibb.co/Jvb7zcw
出了什么问题?感谢您的帮助
【问题讨论】:
如果你删除了怎么办
CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
改成
CURRENT_TIMESTAMP
并使用查询:
UPDATE table_name
SET column1 = value1, updated_dt = now(), ...
仅供参考:D
【讨论】:
当您更新具有较少记录的整个表时,更新将在几分之一秒内完成。
这就是为什么您在 updated_dt 所有行中看到相同的 date_time。
如果您尝试在表中进行手动更新,
例如:
查询:
UPDATE test_table
SET request_status = 'TEST'
WHERE id = 193;
然后您可以在 updated_dt 列中看到更改,这将是您的 current_timestamp。
但是当新行插入到表中时,updated_dt 列的值没有改变,也不是 CURRENT_TIMESTAMP 值
这是因为您已经为 created_dt 和 updated_dt 设置了 current_timestamp,
所以基本上做的是当你插入它时,它会在两列中存储CURRENT_TIMESTAMP。现在,当您更新该行时,只有 updated_dt 列会发生变化。
选项:
还有另一个选项NULL ON UPDATE CURRENT_TIMESTAMP。您可以在 updated_dtcolumn 中将此设置为默认值。
它的作用是,当将新记录插入test_table 时,只有created_dt 列具有current_timestamp 值,updated_dt 将是NULL。现在更新该列后,您可以在 updated_dt 中看到 current_timestamp。
【讨论】: