2014-06-14 3 views
0

mysql을 사용하고 있는데 조건이있을 때 테이블에서 삽입 할 때 트리거해야합니다.삽입시 조건이있는 트리거가 행을 삽입하지 않음

Table1에 삽입 될 정보는 사용자 메타 데이터이며 새로운 사용자 등록이 있으면 8 개의 새로운 행이 삽입됩니다. metadata_key가 '이름'때 나는 트리거를 해고 할

트리거 안쪽이 조건이 을 삽입되지 않습니다 풋 때문에 정보가 누락 된 경우 여기에 내 문제입니다 방아쇠는 결코 해고되지 않습니다.

+---------------------Table1---------------+ Table which fires the trigger AFTER INSERT 
+ user_id | meta_key  | meta_value  + 
+ -----------------------------------------+ 
+  1 | first_name | luke   + 
+  1 | second_name | skywalker  + 
+------------------------------------------+ 

' 
+-----------------Table2------------------+ Where I need to INSERT 
+ post_author | post_content | post_title + 
+ ----------------------------------------+ 
+  0 | hub   | luke  + 
+-----------------------------------------+ 

코드

DROP TRIGGER IF EXISTS `post` ; 

CREATE DEFINER = `anagomez`@`localhost` TRIGGER `post` AFTER INSERT ON `table1` 

FOR EACH ROW INSERT 

if(new.meta_key='first_name') then 

insert into table2(post_author,post_content,post_title) values ('0','hub',new.meta_value); 

end if 

어떤 조언 :

이러한 내 테이블입니다?

+1

Shouldn 'new.metadata_key ='first_name ') then' 대신 new.meta_key'가 될 것입니다. – myesain

+0

고마워요. 실제로 meta_key와 meta_value입니다. 예제에서는 잘못 작성했지만 코드에서는 괜찮습니다. –

답변

1

트리거 거의 정확하지만,이 작은 문제이며 내가 구분 기호를 추가하고 문제가 당신이 BEGIN 누락 된 한 대신 사용자가 추가

delimiter // 

CREATE DEFINER = `anagomez`@`localhost` TRIGGER `post` AFTER INSERT ON `table1` 

FOR EACH ROW 
BEGIN 

    if(new.meta_key='first_name') then 

    insert into table2(post_author,post_content,post_title) values ('0','hub',new.meta_value); 

    end if; 
end; // 
delimiter ; 

과 같아야합니다 INSERT

+0

문제는 나는 phpMyAdmin에서 작업 중이므로 트리거, 프로 시저에 대한 온라인 편집기가 있습니다 ... 나는 구분자 안에있을 필요가없는 코드를 작성한다. 내가 틀린가? –

+0

글쎄 PHPAmyadmin에 대해 잘 모르겠다. MySQL 터미널에서 트리거를 실행할 때 필요한 구분 기호없이 시도 할 수있다. 하지만 예, BEGIN 및 END를 트리거에 추가하면 작동합니다. –

+0

글쎄, Table2는 Table1을 업데이트하는 또 다른 트리거를 발사하기 때문에 두 개의 트리거가 있습니다. 첫 번째는 Table1 AFTER INSERT이고 두 번째는 Table2 AFTER UPDATE입니다. Table2가 무언가를 변경하려고 시도하는 동안 Table1이 수정되고 있기 때문에 충돌이있는 것 같습니다. 잠겨있을 수 있습니다. 어떻게하면 문제를 해결할 수 있을까요? –

관련 문제