【发布时间】:2014-08-28 08:33:26
【问题描述】:
我正在尝试创建一个触发器,该触发器将在重复密钥更新时触发,但它不起作用。这个想法是,在每次重复键更新时,我想复制历史表中更新行的旧内容。
INSERT INTO t1
(
w1,
w2
)
Select
w1,
w2
from t2
on duplicate key update
w2 = IF(values(w2) is not null and values(w2) != "", VALUES(w2), t1.w2);
还有触发器:
drop trigger if trigger1;
DELIMITER $$
CREATE
TRIGGER trigger1 before update ON t1
FOR EACH ROW
BEGIN
INSERT INTO history_table
(
w1, -- this is primary key
w2
)
values(
old.w1,
old.w2
);
END$$
DELIMITER ;
有没有人知道如何让它工作,如果可能的话。
我试图让触发器在插入之前启动,但它不起作用。
谢谢
【问题讨论】:
-
我怀疑捕获这个的唯一方法可能是
AFTER UPDATE触发器。运行的BEFORE触发器将始终为BEFORE INSERT,并且从技术上讲,BEFORE触发器应在服务器发现重复密钥违规之前触发。
标签: mysql triggers sql-update sql-insert