読者です 読者をやめる 読者になる 読者になる

TIMESTAMP カラム

SQL

以前、MySQL のテーブルを作るときに悩んだのが、TIMESTAMP をデフォルト値として持つテーブル作成する時、
2つ以上の TIMESTAMP で、デフォルト値をセットしようとするとダメなことです。

前に、、
http://blog.zaq.ne.jp/oboe2uran/article/914/
で書いた時の解決策に、

TIMESTAMP 型は、NOT NULL 制約に対して DEFAULT 0 で、NULLを入れようとすると、NOW() の結果が入ることを利用する

でもこれは、やはり INSERT文にわざわざ NULL を指示するので嫌だ。
かといって TRIGGER も管理がめんどうなのと、TRIGGER で暗黙的にロックがかかって、
Dead-Lock の原因になりかねない。。。

それでも、TRIGGER を用意する場合、、、

DELIMITER //
DROP TRIGGER IF EXISTS pointinfo_insert_trigger
//
CREATE TRIGGER pointinfo_insert_trigger
BEFORE INSERT ON pointinfo
FOR EACH ROW
BEGIN
   IF NEW.created_at = 0 THEN
       SET NEW.created_at = NOW();
   END IF;
END;
//
DELIMITER ;