replace只会在mariadb中触发一个触发器

时间:2014-10-29 13:11:21

标签: mysql replace triggers mariadb

我有以下表格

CREATE TABLE `trigger_root` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `p` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
);

CREATE TABLE `trigger_test` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `p` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
);

以及以下触发器

DELIMITER ||

CREATE TRIGGER tit 
BEFORE INSERT ON trigger_root
FOR EACH ROW
BEGIN
    INSERT INTO trigger_test (p) values (NEW.p);
END ||

CREATE TRIGGER tdt 
BEFORE delete ON trigger_root
FOR EACH ROW
BEGIN
    delete from trigger_test where p=OLD.p;
END ||

DELIMITER ;

但是,如果我使用以下声明

replace into trigger_root(id,p) select id,p from trigger_root;

仅调用删除触发器。如果我删除删除触发器,则调用插入触发器。 所以看来替换只触发一个而不是两个触发器 这是一般性限制还是我做错了什么?

1 个答案:

答案 0 :(得分:0)

我发现了错误。插入需要在之后而不是之前。