total(department,nums)记录了每个专业学生的人 数, 请编写触发器, 当添加、删除学生和更改学生所在的专业时, 能够自动 更新 total 表。
时间: 2024-01-21 17:16:19 浏览: 28
可以使用MySQL的触发器来实现该功能。
首先,创建一个名为`total`的表,用于记录每个专业的学生人数:
```mysql
CREATE TABLE total (
department VARCHAR(50) NOT NULL PRIMARY KEY,
nums INT NOT NULL DEFAULT 0
);
```
然后,创建一个名为`update_total`的触发器,当添加、删除、或更改学生所在的专业时,会自动更新`total`表中对应专业的人数。触发器的具体实现如下:
```mysql
CREATE TRIGGER update_total AFTER INSERT ON student
FOR EACH ROW
BEGIN
UPDATE total SET nums = nums + 1 WHERE department = NEW.department;
END;
CREATE TRIGGER update_total AFTER DELETE ON student
FOR EACH ROW
BEGIN
UPDATE total SET nums = nums - 1 WHERE department = OLD.department;
END;
CREATE TRIGGER update_total AFTER UPDATE ON student
FOR EACH ROW
BEGIN
UPDATE total SET nums = nums - 1 WHERE department = OLD.department;
UPDATE total SET nums = nums + 1 WHERE department = NEW.department;
END;
```
以上触发器中的`student`表包含了每个学生的信息,其中包括`department`字段,表示该学生所在的专业。触发器中使用`NEW`和`OLD`关键字来获取插入、删除、或更新的记录的值。根据这些值,触发器会自动更新`total`表中对应专业的人数。