Mysql版本是5.1.73,timestamp
或current_timestamp
子句中只有一个deafault
列on 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
列获得了一个值,而不是默认值?感谢。
答案 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);
。