为什么使用“timestamp not null”会导致默认值被设置为“CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP”?

4

当我创建一个新的表格时

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;
看起来需要指定默认值,但这正是我不想要的。如何做到在表创建后默认值未设置且架构不为空,而无需进行任何修改?
MySql版本:5.5.49

1
【TIMESTAMP的自动初始化和更新】:如果既没有DEFAULT CURRENT_TIMESTAMP也没有ON UPDATE CURRENT_TIMESTAMP,则与指定DEFAULT CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP相同...为了抑制第一个TIMESTAMP列的自动属性,请执行以下任一操作... - Damien_The_Unbeliever
1个回答

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接