MySQL で2つ以上の TIMESTAMP型の列がある場合の定義を、以前、
http://blog.zaq.ne.jp/oboe2uran/article/914/
に書いたが、この方法だと、INSERT 時に、NULL を指定など、センスがなかった。
DELIMITER //
DROP TABLE IF EXISTS pointinfo ;
//
CREATE TABLE pointinfo (
id INT NOT NULL AUTO_INCREMENT
, `point` INT NOT NULL
, created_at TIMESTAMP NOT NULL DEFAULT 0
, update_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
, PRIMARY KEY (id) )
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_bin ;
//
DELIMITER ;
-- 以下、null 指定はセンスがない
INSERT INTO pointinfo ( `point`, created_at )
VALUES (12, null), (13, null), (14, null), (15, null);
COMMIT ;
BEFORE INSERTのトリガを用意すれば、
INSERT INTO pointinfo ( `point` )
VALUES (12), (13), (14), (15);
とできるじゃないですか。
DELIMITER //
DROP TRIGGER IF EXISTS trigger_pointinfo_insert
//
CREATE TRIGGER trigger_pointinfo_insert BEFORE INSERT
ON pointinfo FOR EACH ROW
BEGIN
SET NEW.created_at=NOW();
END
//
DELIMITER ;
===========================
でも、これは、古いMySQLの話、、、
MySQL5・7以上なら、、、
MySQL 複数のTIMESTAMP DEFAULT CURRENT_TIMESTAMP - Oboe吹きプログラマの黙示録