2016-06-21 160 views
0

我需要一个mysql触发后插入或更新表我想添加到表的通知(并在将来发送电子邮件通知)触发MySql的插入或更新

触发插入做工精细 触发更新有问题,如果我编辑“字”,他正确地插入,但如果我再次编辑...我收到一个错误,因为ê尝试在表通知插入相同的ID

table_real 
    ------------- 
    | id | word | news | 
    ------------- 
    | 1 | this | this | 
    ------------- 
    | 2 | that | this | 
    ------------- 
    | 3 | this | this | 
    ------------- 

    tablenotifications 
    --------------------- 
    | id | word | news | 
    --------------------- 
    | 1 | this | 2 | 
    --------------------- 
    | 2 | that | 1 | 


DELIMITER $$ 
CREATE 
    TRIGGER `trigger_insert` AFTER INSERT 
    ON `table_real` 
    FOR EACH ROW BEGIN 
     INSERT INTO tablenotifications(id, word, news) VALUES (new.id, new.word, new.news); 

    END$$ 

DELIMITER ; 


DELIMITER $$ 
CREATE 
    TRIGGER `trigger_update` AFTER UPDATE 
    ON `table_real` 
    FOR EACH ROW BEGIN 

     INSERT INTO tablenotifications (id, word, news) VALUES (new.id, new.word, new.news); 

    END$$ 

DELIMITER ; 

解决方案: 编辑表格,改变我的主键

+3

我想,如果你想插入'id'多次到该表中,你不应该使用'id'作为'tablenotification'主键,因为主键'id'为'tablenotification'手段你只能将'id'插入'tablenotification'。只需使用另一个(自动增量)ID作为该表中的主键。 – Solarflare

+0

我换了主键,问题解决了!谢谢 –

回答

0

当出现表格而不是插入时,更新与编辑的ID相对应的行。

DELIMITER $$ 
CREATE 
TRIGGER `trigger_update` AFTER UPDATE 
ON `table_real` 
FOR EACH ROW BEGIN 

    UPDATE tablenotifications SET id=new.id, word=new.word, news=new.news; 

END$$