当值为空时,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呢?
答
这是一个TIMESTAMP列做什么:
TIMESTAMP数据类型提供了自动初始化和更新到当前日期和时间(即当前的时间戳)。 [...]您可以初始化或更新任何TIMESTAMP列到当前日期和时间,方法是为其分配NULL值,除非已使用NULL属性定义为允许NULL值。
也许你想使用DATETIME呢?
+0
谢谢!我已经快速浏览了一下,我想我没有给予足够的关注:(这句话说明了一切:“另外,你可以通过给它指定一个NULL值来初始化或更新任何TIMESTAMP列到当前的日期和时间,除非已使用NULL属性定义为允许NULL值。“ 再次感谢! – Neets
该字段是否有默认值? – jbe
分享表定义 –
设置默认值currentTimeStamp –