MySQL

2013-08-09, mysql

TIMESTAMP列を使う

他のDBを辞めてmysqlをメインに使うようになったときに最初に戸惑ったのが、このTIMESTAMP列の仕様でした。 勝手に更新されるし、(自動更新を定義した場合のみ、とは知らず)1テーブルに複数定義できないし、なんという不思議な型だ、と拒絶反応が出てそれ以降使っていませんでした。

が、よく考えてみると、この仕様が便利な場面って確かに存在します。ついつい教科書につられて、「生成日時」と「最終更新日時」と残そうとするんですが、普通のファイルシステムで使っているように「最終更新日時」だけでも十分に事足ります。逆に、きちんと履歴管理したい場合はそもそもレコード内に幾つか「日時」を記録していくだけでは不十分なんですよね。

という訳で、これからはTIMESTAMPも積極活用していこうと思います。以下は、INSERT,UPDATEそれぞれのタイミングで自動更新されるTIMESTAMP列の定義例です。

CREATE TABLE t (
id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
v VARCHAR(255) NOT NULL DEFAULT '',
modified_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);

参考URL

この記事は役に立ちましたか?