私は新しいテーブルなぜ 'タイムスタンプnot null'はデフォルトで 'CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'に設定されていますか?
create table test(rId int auto_increment, createtimestamp timestamp not null, PRIMARY KEY (rId));
を作成すると、それはCURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
として createtimestamp
にデフォルトのスキーマを持つテーブルを作成します。
期待される動作はデフォルトで設定されていませんでした。しかし、デフォルトに設定されています: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
[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列の自動プロパティを抑制するには、次のいずれかを実行します。 –