2016-06-21 3 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''삽입을 할 경우 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$$ 
관련 문제