是否有任何文档(在https://dev.mysql.com/doc/refman/5.5/en/timestamp-initialization.html中无法使用)指定是否首先执行对Timestamp
列或触发器的自动更新?
CREATE TABLE IF NOT EXISTS `table1` (
`id` VARCHAR(255) NOT NULL,
update_time TIMESTAMP DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY(`id`)
);
CREATE TABLE IF NOT EXISTS `table2` (
`id` VARCHAR(255) NOT NULL,
update_time TIMESTAMP DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY(`id`)
);
delimiter $$
DROP TRIGGER if EXISTS `trigger_upd_table1` $$
CREATE TRIGGER `trigger_upd_table1`
AFTER UPDATE ON `table1`
FOR EACH ROW BEGIN
INSERT INTO `table2` VALUES (new.`id`, new.`update_time`);
END $$
delimiter ;
INSERT INTO `table1` (`id`) VALUES ('100');
UPDATE `table1` t1
SET t1.id = '101'
WHERE t1.id = '100';
用一个例子进一步阐明。当我对table1
中的单个记录运行更新查询时,将首先执行update_time
列上的自动更新还是在table1
中指定的触发器执行。目前,我正在v8.0.15中进行测试,并看到首先对update_time
列进行自动更新。然后将更新的记录插入table2
中。
但是是否有任何文档指定行为?