Обновить внешний ключ на INSERT INTO ... SELECT - PullRequest
0 голосов
/ 08 февраля 2012

У меня есть следующий оператор для вставки значений из одной таблицы (сообщения) в другую (разговоры):

INSERT INTO conversations (subject, user_id, notify_me, invite_only, real_name_only, max_post_length, last_updated_at, created_at, updated_at)
SELECT subject, user_id, notify_me, invite_only, real_name_only, max_post_length, thread_updated_at, created_at, updated_at FROM posts WHERE ancestry IS null;

После каждой вставки я хочу обновить столбец conversation_id в posts, чтобы он указывал на вновь вставленную строку conversations.

Какой лучший способ сделать это?

1 Ответ

1 голос
/ 08 февраля 2012

Я думаю, что вам нужен триггер:

DELIMITER $$

CREATE TRIGGER AFTER INSERT ON `conversations` FOR EACH ROW
BEGIN
    UPDATE posts
        SET posts.conversation_id = NEW.Id
        WHERE
            posts.subject = NEW.subject
            AND posts.user_id = NEW.user_id
            AND posts.created_at = NEW.created_at;
END$$
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...