CURRENT_TIMESTAMPを使う場合の留意事項

CURRENT_TIMESTAMP型についての注意は詳しくは公式リファレンス参照のこと。
http://dev.mysql.com/doc/refman/5.1/ja/timestamp-4-1.html


・通常、NOT NULLを指定しなかったカラムはNULL許可となるが、Default値にCURRENT_TIMESTAMPを設定したTIMESTAMP型カラムはNOT NULL指定しなくてもNOT NULLとなってしまう。
・あるテーブルのDefault値にCURRENT_TIMESTAMPを使う場合、defaultの無いTimestamp型は定義できない。(default=0などを設定する必要がある)
・あるテーブルのDefault値にCURRENT_TIMESTAMPを使う場合、CURRENT_TIMESTAMPは1つまでしか定義できない。

理由は良く分からないのですが、そういう仕様のようです。

Oracleのsysdate感覚で使うことはできませんよね、そうですよね、という当たり前といえば当たり前のお話。更新日だの、作成日だののデフォルト値にシステム日付が使いたくなることは、設計上よくあることだと思いますので、上に書いたようなトラップにひっかかってアタフタしないように(笑)。それは自分か orz