提问人:Malark Revern 提问时间:11/3/2023 最后编辑:ShadowMalark Revern 更新时间:11/7/2023 访问量:51
如何使用 SQL 中的查询数据创建将行插入到不同表中的触发器?
How do I create a trigger that inserts rows into a different table using queried data in SQL?
问:
我想在我的 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 #
我现在遇到了一个障碍,我不知道如何继续。我正在尝试的是否可能,如果是,我该如何解决我上面写的内容?
答:
0赞
user1191247
11/7/2023
#1
我建议这是应该在您的应用程序中处理的事情,但可以做到。
以下触发器将选择 3 个与新插入测试的标签匹配的随机 (ish) 问题:
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<>小提琴。
下一个:MySQL从联接表中选择特定条目
评论
tag