创建触发器,对SC表进行插入时,如果学生的选课总学分超过30,则报错并撤销插入。
时间: 2023-11-03 19:04:11 浏览: 182
创建触发器删除、更新、插入
可以使用以下代码创建触发器:
```sql
CREATE TRIGGER check_credit
BEFORE INSERT ON SC
FOR EACH ROW
BEGIN
DECLARE total_credit INT;
SELECT SUM(credit) INTO total_credit FROM Course WHERE cno = NEW.cno;
SELECT SUM(credit) INTO total_credit FROM SC WHERE sno = NEW.sno;
IF (total_credit + NEW.credit > 30) THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Total credit exceeds 30';
END IF;
END;
```
这个触发器会在每次向 SC 表中插入新行之前执行。它会计算学生已选课程的总学分和将要插入的新行的学分,如果总学分超过30,则会报错并撤销插入。注意,这里用了 SIGNAL 语句来报错,这是 MySQL 提供的一种抛出异常的方法。
阅读全文