當我創建一個新的表爲什麼'timestamp not null'導致默認設置爲'CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'?
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版本:49年5月5日
[自動初始化和更新TIMESTAMP](https://dev.mysql.com/doc/refman/5.5/en/timestamp-initialization.html):「既沒有DEFAULT CURRENT_TIMESTAMP也沒有ON UPDATE CURRENT_TIMESTAMP,它是與指定DEFAULT CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP相同...要禁止第一個TIMESTAMP列的自動屬性,請執行以下任一操作...「 –