timestamp型 のカラムに対して、現在日時が自動設定される

MySQL5.0.x を利用していて、スキーマ中に timestamp型 を定義していたところ、
Update文を実行した場合に、その timestamp型 のカラムに現在日時がが自動でセットされました。。


会社で同じ思いをした人から情報をもらい解決しましたが、
エー、な感じ。

発生条件

  • MySQLをMAXDB以外のモードで起動
  • スキーマの定義順で、1つ目のtimestamp型であること
  • INSERT文で、明示的に指定しない場合
  • LOAD DATA INFILE文で、明示的に指定しない場合
  • UPDATE文で、明示的に指定しない場合

使いどころ

1つ目の timestamp型 だけが対象なので、

  • INSERTしか行わない場合、登録日時をDBに設定させる。
  • update_on(更新日時)を1つ目のtimestamp型にする。
  • ...

 ぐらいかなぁ

解決方法

datetime型 に変更することで解決可能です。
ただし、 4byte -> 8byte になるよ。

ALTER TABLE テーブル名 カラム名 カラム名 型;