概要
DBの各テーブルには大抵の場合、更新日と作成日、また作成者を登録したくなる。
これを全テーブルで、更には各updateとinsertのSQL操作で毎回書くのは冗長すぎるのでなんとか自動でできる手段を探していたが、 テーブル作成段階でこれを可能にする方法があったのでその備忘録。
結論
CREATE TABLE
文で以下のようにする。
CREATE TABLE Users ( //他のカラム定義 created DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, updated DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (id) );
見たとおりだが
- insert時のデフォルト値について:
DEFAULT
に`CURRENT_TIMESTAMPを設定(insert時点の日時で記録) - update時の値について(updatedカラム):
ON UPDATE
でCURRENT_TIMESTAMP
を設定
が実現している。
その他
他のテーブル定義にデフォルトでupdated
やcreated
を付加する便利な方法を探している。
(テーブル作成時にコピペするだけなので大した手間というわけではないのだが、やはりめんどくさい...