昔、MySQL で、複数のTIMESTAMP で
DEFAULT CURRENT_TIMESTAMP を宣言しようとして、
DELIMITER // DROP TABLE IF EXISTS branch; // CREATE TABLE branch ( id INT NOT NULL AUTO_INCREMENT , branch_name VARCHAR(64) NOT NULL , created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP , update_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP , PRIMARY KEY (id) ) DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci // DELIMITER ;
Error Code: 1293. Incorrect table definition; there can be only one TIMESTAMP column
with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
で、仕方なく、
https://oboe2uran.hatenablog.com/entry/2013/07/07/103023
https://oboe2uran.hatenablog.com/entry/2013/08/27/125127
と、していた。
でも、MySQL 5.7 以上なら、もうこのようなことはなく、
期待どおり、INSERT 時、UPDATE時、TIMESTAMP が自動で格納、更新されるようになる。
以下が、使える
TRUNCATE TABLE branch; INSERT INTO branch (branch_name) VALUES ('a'),('b'),('c'); commit; SELECT * FROM branch;
UPDATE branch SET branch_name = 'B' WHERE id = 2; commit; SELECT * FROM branch;