MySQL триггер с вложенным выбором - PullRequest
1 голос
/ 13 марта 2012

Я пытаюсь создать триггер MySQL, который запускается после вставки в таблицу A и связан с несколькими строками. По сути, когда я вставляю в таблицу A, я хочу вставить в таблицу B строку с каждой строкой из таблицы C и вставленным идентификатором из таблицы A. Может ли кто-нибудь помочь?

Это общая идея -

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);
    }
...

Спасибо!

Evan

1 Ответ

1 голос
/ 13 марта 2012

Как насчет -

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 ;
...