Mysql:将空时间戳插入NOT NULL列

时间:2017-02-10 10:48:30

标签: mysql

Mysql版本是5.1.73,timestampcurrent_timestamp子句中只有一个deafaulton update,所以我尝试创建表:

create table `temp`( 
  `id` INTEGER NOT NULL auto_increment PRIMARY KEY, 
  `created_date` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00',
  `last_updated_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

在我执行了这个sql之后:

insert into `temp`(id,created_date, last_updated_date) values(1,null, null); 

我收到了这份文件:

1   2017-02-10 18:17:16 2017-02-10 18:18:13

这是我的问题:

  • 我设置created_date NOT NULL,为什么插入sql运行良好?它应该返回Error: Column 'xx' cannot be null吗?
  • 为什么created_date列获得了一个值,而不是默认值

感谢。

1 个答案:

答案 0 :(得分:1)

这就是MySql的{​​{1}}的工作方式,如果您希望TIMESTAMP出现错误,那就是使用NULL

所以如果你创建下表

DATETIME

然后执行以下查询,您将收到错误。

create table `temp`( 
  `id` INTEGER NOT NULL auto_increment PRIMARY KEY, 
  `created_date` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
  `last_updated_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

现在您将开始收到此错误insert into `temp`(id,created_date, last_updated_date) values(1,null, null);