2016-06-21 191 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$$