我想在我的 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 #
我现在遇到了障碍,我不知道如何继续。我正在尝试的可能吗?如果是,我该如何修复我上面写的内容?
我建议这是应该在您的应用程序中处理的事情,但它可以完成。
以下触发器将选择与新插入测试的标签匹配的 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<>小提琴。