total(Department,nums)记录了每个专业学生的人数, 请编写触发器, 当x向学生表中添加、删除学生和更改学生所在的专业时, 能够自动更新 total 表。sqlserver
时间: 2024-02-12 09:05:18 浏览: 25
好的,以下是针对SQL Server数据库的触发器示例,可以在添加、删除、修改学生信息时自动更新total表:
```sql
CREATE TRIGGER update_total ON student
AFTER INSERT, DELETE, UPDATE
AS
BEGIN
IF EXISTS (SELECT * FROM inserted)
BEGIN
-- 更新添加的学生记录
UPDATE total
SET nums = nums + (SELECT COUNT(*) FROM inserted WHERE total.department = inserted.department)
WHERE EXISTS (SELECT * FROM inserted WHERE inserted.department = total.department);
END
IF EXISTS (SELECT * FROM deleted)
BEGIN
-- 更新删除的学生记录
UPDATE total
SET nums = nums - (SELECT COUNT(*) FROM deleted WHERE total.department = deleted.department)
WHERE EXISTS (SELECT * FROM deleted WHERE deleted.department = total.department);
END
-- 更新修改的学生记录
UPDATE total
SET nums = nums + (SELECT COUNT(*) FROM inserted WHERE total.department = inserted.department)
- (SELECT COUNT(*) FROM deleted WHERE total.department = deleted.department)
WHERE EXISTS (SELECT * FROM inserted WHERE inserted.department = total.department)
OR EXISTS (SELECT * FROM deleted WHERE deleted.department = total.department);
END;
```
这个触发器使用了AFTER INSERT, DELETE, UPDATE触发器类型,可以在添加、删除、修改学生信息时自动触发。当插入新的学生信息时,触发器会自动更新对应专业的人数加1;当删除学生信息时,触发器会自动更新对应专业的人数减1;当修改学生的专业信息时,触发器会分别更新新专业和旧专业的人数。
需要注意的是,这个触发器是基于SQL Server数据库的,如果您使用的是其他数据库,可能会有所不同。另外,触发器的具体实现也可能会因为表结构和业务需求的不同而有所差异。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)