已知有选课表sc和课程表course,其中课程表中有选课人数字段(xkrs),请编写三个触发器,分别实现当向sc表插入记录时,把课程表中对应课程的选课人数字段加1;当从sc表删除一条记录时,把课程表中对应课程的选课人数字段减1;当修改sc表中一条记录的课号(cno)时,把课程表中对应课程的选课人数字段加1,对应课程的选课人数字段加1。
时间: 2023-06-24 16:03:07 浏览: 205
数据库之—用触发器实现每个学生最多只能选择3门课程
5星 · 资源好评率100%
下面是三个触发器的代码实现:
1. 向sc表插入记录时更新课程表选课人数字段:
```sql
CREATE TRIGGER insert_sc_trigger
AFTER INSERT ON sc
FOR EACH ROW
UPDATE course SET xkrs = xkrs + 1 WHERE cno = NEW.cno;
```
2. 从sc表删除记录时更新课程表选课人数字段:
```sql
CREATE TRIGGER delete_sc_trigger
AFTER DELETE ON sc
FOR EACH ROW
UPDATE course SET xkrs = xkrs - 1 WHERE cno = OLD.cno;
```
3. 修改sc表中一条记录时更新课程表选课人数字段:
```sql
CREATE TRIGGER update_sc_trigger
AFTER UPDATE ON sc
FOR EACH ROW
BEGIN
IF NEW.cno != OLD.cno THEN
UPDATE course SET xkrs = xkrs + 1 WHERE cno = NEW.cno;
UPDATE course SET xkrs = xkrs - 1 WHERE cno = OLD.cno;
END IF;
END;
```
这三个触发器分别在向sc表插入记录、从sc表删除记录、修改sc表中一条记录时触发,更新对应课程表中的选课人数字段。其中,插入和删除操作可以直接更新对应课程表中的选课人数字段,而修改操作需要分别更新新旧课程的选课人数字段。
阅读全文