更新日時と作成日時
MySQL での更新日時(`updated_at`)と作成日時(`created_at`)の型をどうしようか迷ってしまい、ちとはまってしまった。。。
私の結論としては下記がベストのように思っている。
まず、テーブル作成は下記のようにする。
CREATE TABLE テーブル名 (
・・・略・・・
`updated_at` timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`created_at` datetime NOT NULL
);
で、データを作成する際は
INSERT INTO テーブル名 (
・・・略・・・
`created_at`
)
VALUES (
・・・略・・・
NOW( )
);
とし、`updated_at`は明示しない。
また、データを更新する際は
UPDATE テーブル名
SET
・・・略・・・
WHERE
・・・略・・・;
とし、同じく`updated_at`は明示しない。
するとデータ作成時は `created_at`にセットされる NOW( ) と `updated_at` に暗黙的にセットされる CURRENT_TIMESTAMP が同じ値を挿入することにはなるが、以降、データ更新時には`updated_at` は明示しなくても自動的に CURRENT_TIMESTAMP で更新し続けてくれる。
細かくてどうでも良さそうで、今までは両方 datetime にして更新日時には NOW() をセットしていたんだが、この際ケジメをつけようと思ってこだわってみた結果、こう言う結論に私は至ったのである。
異論等御意見歓迎。