当我创建新表时
create table test(rId int auto_increment, createtimestamp timestamp not null, PRIMARY KEY (rId));
它创建一个具有默认架构的表
createtimestamp
为CURRENT_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
答案 0 :(得分:0)
初始答案是正确的,但是如果定义中有默认值或NULL是不可接受的,可以考虑使用日期时间,或者升级到允许行为更改的MySQL 5.6 http://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_explicit_defaults_for_timestamp。