Mysql:触发重复密钥更新无法正常工作

时间:2014-08-28 08:33:27

标签: mysql triggers sql-update sql-insert

我正在尝试创建一个触发器,它将触发重复键更新,但它不起作用。我的想法是,在每次重复密钥更新时,我想复制历史表中更新行的旧内容。

    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 ;

是否有人知道如何使其发挥作用,一般情况下是否可行。

我尝试在插入之前启动触发器并且它没有工作。

谢谢

1 个答案:

答案 0 :(得分:0)

如果你在history_table.w1上有主键并且你做了一次更新,假设w1 = 1,则因为"重复输入"而不会记录w1 = 1的下一次更新。错误