有“Student”和“Department”表,创建触发器,如果有学生转系,则相应系人数也一并修改。学生转系时,涉及数据库修改有3处:(1)Student表DepID值发生变化;(2)Department表原系的总人数Total字段值减去1;(3)Department表新系的总人数Total字段值加1。根据题意补充程序:
时间: 2024-02-21 16:59:02 浏览: 72
好的,我来为你补充这段代码:
```sql
CREATE TRIGGER transfer_dept
ON Student
AFTER UPDATE
AS
BEGIN
DECLARE @oldDeptID INT, @newDeptID INT;
SELECT @oldDeptID = DepID FROM deleted;
SELECT @newDeptID = DepID FROM inserted;
IF @oldDeptID <> @newDeptID
BEGIN
UPDATE Department SET Total = Total - 1 WHERE DepID = @oldDeptID;
UPDATE Department SET Total = Total + 1 WHERE DepID = @newDeptID;
END
END
```
这个触发器是在`Student`表上创建的,当`Student`表中的记录被更新时,触发器会被激活。在触发器的主体中,首先定义了两个变量`@oldDeptID`和`@newDeptID`,分别用于存储旧系编号和新系编号。这两个变量通过`deleted`和`inserted`虚拟表获取,`deleted`虚拟表包含被更新的记录的旧值,`inserted`虚拟表包含被更新的记录的新值。
然后,通过比较旧系编号和新系编号,判断学生是否转系。如果学生转系,则通过`UPDATE`语句修改旧系和新系的总人数。具体来说,将原系的总人数减1,将新系的总人数加1。
希望这个答案能够帮到你!
阅读全文