2016-06-21 25 views
1

私は新しいテーブルなぜ 'タイムスタンプ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

+1

[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列の自動プロパティを抑制するには、次のいずれかを実行します。 –

答えて

関連する問題