mysql - 更新 INSERT INTO... SELECT 上的外键

标签 mysql sql

我有以下语句将一个表(帖子)中的值插入到另一个表(对话)中:

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;

每次插入后,我想更新 postsconversation_id 列以指向新插入的 conversation 行。

实现这一目标的最佳方法是什么?

最佳答案

我认为你需要的是一个触发器:

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$$

关于mysql - 更新 INSERT INTO... SELECT 上的外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9200311/

相关文章:

c# - asp.net 从代码隐藏中手动添加一行

php - 使用 PHP 更新 MySQL 条目

java - 只打印查询字符串的长度

MySQL 字符串转换为无符号

sql - LINQ 查询 RavenDB

mysql - 将两个查询变成一个

从单个列中用空格分隔的 MySQL 不同单词

php - 无法更新 InnoDb 中的数据库

sql - 由于排序规则不匹配,对两个数据库的查询有错误

SQL:取消嵌套数组,在 aws athena 中保持相同的行数