2016-06-21 10 views
0

私は、挿入後にMySQLのトリガーを必要とするまたは私はテーブル通知に追加する(および将来的には電子メール通知を送信)テーブルを更新トリガMySQLのINSERTまたはUPDATE

トリガー挿入作業罰金 トリガ更新があれば、問題を抱えています私は、「言葉」彼は正しく挿入を編集し、私は再び編集する場合eは、同じ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' 'ことを挿入したい場合は、tablenotification''の主キーとして 'id'を使うべきではないと思いますので、' tablenotification'手段の主キー 'id' '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$$ 
関連する問題