为什么“时间戳不为空”'导致默认设置为' CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP&#39 ;?

时间:2016-06-21 13:09:22

标签: mysql sql timestamp

当我创建新表时

create table test(rId int auto_increment, createtimestamp timestamp not null, PRIMARY KEY (rId));

它创建一个具有默认架构的表 createtimestampCURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

预期的行为没有默认设置。但它已设置为默认值:CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP。为什么会这样?

我可以在使用ALTER TABLE test CHANGE COLUMN createtimestamp createtimestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ;创建后更改此内容,但无法将其更改为ALTER TABLE test CHANGE COLUMN createtimestamp createtimestamp TIMESTAMP NOT NULL ;

看起来必须指定默认值,但这正是我不想要的。如何创建表并且不需要进行任何更改后,如何实现未设置缺省且schema不为null的行为?

MySql版本:5.5.49

1 个答案:

答案 0 :(得分:0)

初始答案是正确的,但是如果定义中有默认值或NULL是不可接受的,可以考虑使用日期时间,或者升级到允许行为更改的MySQL 5.6 http://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_explicit_defaults_for_timestamp