MySQL自动更新时间戳和触发执行顺序

时间:2019-12-19 22:21:13

标签: mysql sql

是否有任何文档(在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中。

但是是否有任何文档指定行为?

0 个答案:

没有答案
相关问题