BEFORE INSERT のトリガで充分

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吹きプログラマの黙示録