当值为空时,MySQL将字段设置为当前日期

问题描述:

我有一个带有两个时间戳字段的表。他们不是可以空的。问题是,只要我在这些字段中插入null,当前日期就会自动保存,而不是抛出一个错误,说“Column'first_data_dt'不能为null”,就像我将值插入另一个不可空字段。当值为空时,MySQL将字段设置为当前日期

没有与此表关联的触发器。

有人知道为什么会发生这种情况吗?

编辑补充表定义:

CREATE TABLE `ui_mytable` (

    `id` int(11) NOT NULL, 

    `first_data_dt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 

    `last_data_dt` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' 

) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

我现在明白为什么first_data_dt更新为当前时间戳我随时插入空。但是,last_data_dt呢?

+2

该字段是否有默认值? – jbe

+2

分享表定义 –

+1

设置默认值currentTimeStamp –

这是一个TIMESTAMP列做什么:

TIMESTAMP数据类型提供了自动初始化和更新到当前日期和时间(即当前的时间戳)。 [...]您可以初始化或更新任何TIMESTAMP列到当前日期和时间,方法是为其分配NULL值,除非已使用NULL属性定义为允许NULL值。

来源:MySQL documentation

也许你想使用DATETIME呢?

+0

谢谢!我已经快速浏览了一下,我想我没有给予足够的关注:(这句话说明了一切:“另外,你可以通过给它指定一个NULL值来初始化或更新任何TIMESTAMP列到当前的日期和时间,除非已使用NULL属性定义为允许NULL值。“ 再次感谢! – Neets