MySQL create table で DATETIME型のデフォルトを設定しようとして、
CURRENT_TIMESTAMP を指定するが、
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
のようにカラムを指定した時、、、
ERROR 1067: Invalid default value for
が発生する。定数でないとダメだと!
しかたないので、INSERT時とUPDATE時にトリガを仕掛ける。
foo テーブル に仕掛けるトリガ、
DELIMITER //
DROP TRIGGER IF EXISTS test.trigger_foo_insert
//
CREATE TRIGGER trigger_foo_insert BEFORE INSERT
ON test.foo FOR EACH ROW
BEGIN
SET NEW.created_at=NOW();
SET NEW.updated_at=NOW();
END
//
DROP TRIGGER IF EXISTS test.trigger_foo_update
//
CREATE TRIGGER trigger_foo_update BEFORE UPDATE
ON test.foo FOR EACH ROW
BEGIN
SET NEW.updated_at=NOW();
END
//
DELIMITER ;