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

时间:2016-05-31 14:27:18

标签: mysql

我有一个包含两个时间戳字段的表。它们不可空。问题是每当我在这些字段中插入null时,会自动保存当前日期,而不是抛出一个错误,说明" Column' first_data_dt'不能为null",就像当我将值插入另一个不可为空的字段时发生的那样。

此表没有关联的触发器。

有人知道为什么会这样吗?

编辑以添加表格定义:

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会在我插入null时随时更新到当前时间戳。但是last_data_dt呢?

1 个答案:

答案 0 :(得分:2)

这是TIMESTAMP列的作用:

  

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

     

来源:MySQL documentation

也许您想要使用DATETIME?