【发布时间】:2012-09-11 10:18:26
【问题描述】:
我观察到在 MySQL 时间戳列中插入/更新 NULL 时出现意外行为。
考虑以下陈述。
create table temp(id int, hireDate timestamp default 0);
insert into temp (id) values(1);
insert into temp (id, hireDate) values(2, null);
select * from temp;
id hireDate
-----------------------------
1
2 2012-09-19 10:54:10.0
第一次插入(当 SQL 中没有指定 hiredate 时,hireDate 是 null(0),这是预期的。
但是,当在 SQL 中传递显式 null 时,会插入当前日期时间,这是意外的。为什么会这样?
注意:Hibernate 使用第二种类型的插入,因此它成为一个问题。如何将 null 插入时间戳列?
【问题讨论】:
-
什么是休眠?这是 MySQL 的默认行为。每次更新行时,时间戳字段也会自动更新
-
默认 0 是关键。没有它,它仍然是 NULL,而不是 CURRENT_TIMESTAMP
标签: mysql sql database hibernate