我有一张名为
当某个计划班级的
为此,我创建了以下触发器:
有什么想法可以完成这个任务吗?即,当已报名学生人数达到最大可用座位时,将预定课程的状态更新为“已满”。谢谢。
SCHEDULES_CLASS
的表,其中有两个字段:CLASS_ID
(从CLASS
表中获取外键)、STATUS
和NUMBER_OF_ENROLLED_STUDENTS
。我还有另一张表CLASS
,其中只有一个字段MAX_SEATS
。当某个计划班级的
NUMBER_OF_ENROLLED_STUDENTS
等于相应班级的可用MAX_SEATS
时,我需要将该SCHEDULES_CLASS
的状态从最初的“OPEN”更改为“FULL”。为此,我创建了以下触发器:
USE mydb;
DELIMITER ##
dROP TRIGGER IF EXISTS updateClassStatusTrigger ##
CREATE TRIGGER updateClassStatusTrigger
BEFORE UPDATE ON SCHEDULED_CLASS
FOR EACH ROW
BEGIN
UPDATE SCHEDULED_CLASS SET STATUS="FULL" WHERE CLASS_ID=NEW.CLASS_ID
AND EXISTS (SELECT 1 FROM SCHEDULED_CLASS sc, CLASS cl WHERE cl.CLASS_ID=NEW.CLASS_ID AND NEW.NUMBER_OF_ENROLLED_STUDENTS=cl.MAX_SEATS);
END##
我正在使用phpmyadmin,当对SCHEDULED_CLASS表进行更新时,出现以下错误:
#1442 - Can't update table 'SCHEDULED_CLASS' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
有什么想法可以完成这个任务吗?即,当已报名学生人数达到最大可用座位时,将预定课程的状态更新为“已满”。谢谢。