如何创建一个触发器,使用 SQL 中的查询数据将行插入到不同的表中?

问题描述 投票:0回答:1

我想在我的 SQL 数据库中创建一个触发器,当将一个值插入到一个表中时,会执行查询以使用该信息从不同的表中收集信息,最后将来自插入和查询的信息合并到桥接表。

CREATE TABLE question (question_id INT, tag VARCHAR(500) );
CREATE TABLE test (test_id INT, tag VARCHAR(500) );
CREATE TABLE question_list (test_id INT, question_id INT);

INSERT INTO test (test_id, tag) SELECT 1, "Math";

我想用新插入的

question_list
填充
test_id
表,然后查询
question
表找到多个具有匹配标签的问题,最后组合两条信息插入到
question_list
表中。

我最初的想法是这样的:

DELIMITER #
CREATE TRIGGER generate_test ON test
FOR INSERT
BEGIN
    FOR EACH ROW ques IN (
        -- SELECT statement from question table to find matching rows
    ) BEGIN 
        INSERT INTO question_list
            (test_id, question_id)
        SELECT
            ins.test_id, question_id
        FROM INSERTED ins;

    END #
END #

我现在遇到了障碍,我不知道如何继续。我正在尝试的可能吗?如果是,我该如何修复我上面写的内容?

sql mysql join triggers
1个回答
0
投票

我建议这是应该在您的应用程序中处理的事情,但它可以完成。

以下触发器将选择与新插入测试的标签匹配的 3 个随机问题:

CREATE TRIGGER test_after_insert AFTER INSERT ON test
  FOR EACH ROW
    INSERT INTO question_list (test_id, question_id)
    SELECT NEW.test_id, question_id
    FROM question
    WHERE tag = NEW.tag
    ORDER BY RAND()
    LIMIT 3;

这是一个db<>小提琴

© www.soinside.com 2019 - 2024. All rights reserved.