2012-03-12 3 views
1

테이블 A에 삽입 한 후 실행되는 다중 트리거와 관련된 MySQL 트리거를 만들려고합니다. 기본적으로 테이블 A에 삽입 할 때 테이블 C의 모든 행과 테이블 A의 삽입 된 ID를 사용하여 테이블 B에 행을 삽입하려고합니다. 누군가 도움이 될 수 있습니까?중첩 선택을 사용하는 MySQL 트리거

이것은 일반적인 생각이다 -

DELIMITER | 
CREATE TRIGGER mailings_create AFTER INSERT ON mailings FOR EACH ROW 
BEGIN 
    SELECT 
     customer_id, 
     first_name, 
     last_name, 
     email 
    INTO 
     customer_id, 
     first_name, 
     last_name, 
     email 
    FROM 
     cam_customers 
    WHERE 
     mail_list = 'T' 
     AND email IS NOT NULL; 

    foreach ($data as $row) { 
     INSERT INTO 
      mailings_messages 
      (mailings_id, first_name, last_name, customer_id, email) 
     VALUES 
      (NEW.id, first_name, lsat_name, customer_id, email); 
    } 
... 

감사합니다!

에반

답변

1

방법에 대해 - 한 가지 더 - - 굉장

DELIMITER | 

CREATE TRIGGER mailings_create AFTER INSERT ON mailings 
    FOR EACH ROW BEGIN 

     INSERT INTO mailings_messages 
      (mailings_id, first_name, last_name, customer_id, email) 
     SELECT NEW.id, first_name, last_name, customer_id, email 
     FROM cam_customers 
     WHERE mail_list = 'T' 
     AND email IS NOT NULL; 

     SELECT @row_count := ROW_COUNT(); 
     -- INSERT or UPDATE using @row_count here 

    END; 
| 

DELIMITER ; 
+0

가 어떻게했다 행의 수 '우편물'의 '메시지'를 업데이트 할 마지막에 뭔가를 추가 삽입 되었습니까? –

+1

'SELECT ROW_COUNT(); '를 사용하여 이전 쿼리에서 삽입 한 행 수를 검색 할 수 있습니다. 나는 나의 대답을 업데이트 할 것이다. – nnichols