【问题标题】:Trigger that inserts multiple rows in a new table在新表中插入多行的触发器
【发布时间】:2021-12-31 19:54:31
【问题描述】:

我试图弄清楚如何创建一个触发器,在另一个表中插入多行,而不仅仅是一次。

我有 4 个表 --> Student、Class、Assignment、ClassAssignment

Student: 
ID INT, CLASSID (FOREIGN KEY, references class(ID))
Class:
ID INT,
Assignment:
ID
ClassAssignment (Is a bridge table) from Class And Assignment.

我希望,每次在“ClassAssignment”中插入新行时,对于每个具有此“ClassID”的学生,将 studentID 和 assignmentID(均来自此插入的行)插入另一个表 StudentAssignmentSolution。

create trigger newClassAssignment after insert on classassignment 
for each row
insert into StudentAssignmentSolution(studentID, assignmentID) 
values((select id from student where classID = new.classID), new.assignmentID);

我不知道该怎么做,是如何让触发器在另一个表中插入多行,而不仅仅是一次。

【问题讨论】:

    标签: mysql triggers sql-insert


    【解决方案1】:

    INSERT INTO ... 语句中使用SELECT 而不是VALUES,从表Student 中选择所有具有该特定classID 的学生:

    INSERT INTO StudentAssignmentSolution(studentID, assignmentID) 
    SELECT s.ID, NEW.assignmentID
    FROM Student s
    WHERE s.classID = NEW.classID
    

    【讨论】:

      猜你喜欢
      • 2014-06-14
      • 2015-04-26
      • 1970-01-01
      • 1970-01-01
      • 2021-10-13
      • 1970-01-01
      • 1970-01-01
      • 2018-09-07
      • 1970-01-01
      相关资源
      最近更新 更多