2012-03-12 15 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

方法について - もう一つのこと - - AWESOMEです

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