编写触发器TR-4:实现学生自动分组 当向学生表中插入记录时,根据其学号最后一位,将之分入相应的组别(组别Zno=学号最后一位)。在此之前,先建立一张分组表,fenzhu(Sno nvarchar(9),Zno int) 创建完成后插入记录(‘201215129’,’张三’,’男’,20,’CS’)
时间: 2023-10-27 11:04:29 浏览: 68
触发器编写如下:
```
CREATE TRIGGER TR_4
ON 学生
AFTER INSERT
AS
BEGIN
-- 插入分组表
INSERT INTO fenzhu (Sno, Zno)
SELECT Sno, CAST(RIGHT(Sno, 1) AS int) AS Zno
FROM inserted;
END
```
该触发器会在学生表插入记录后自动执行,将学生的学号最后一位转换成整型并插入到分组表中。需要注意的是,分组表必须在触发器之前先创建好,并且保证学生表和分组表的Sno字段类型一致。
相关问题
sql server 编写触发器TR-4:实现学生自动分组 当向学生表中插入记录时,根据其学号最后一位,将之分入相应的组别(组别Zno=学号最后一位)。在此之前,先建立一张分组表,fenzhu(Sno nvarchar(9),Zno int)
CREATE TRIGGER tr_student_group
ON student
AFTER INSERT
AS
BEGIN
INSERT INTO fenzhu(Sno,Zno)
SELECT Sno, CAST(RIGHT(Sno,1) AS INT) AS Zno
FROM inserted
END
这个触发器会在向学生表中插入记录后自动执行,将学生对应的学号和组别插入到分组表中。其中,使用了RIGHT函数获取学号的最后一位,并使用CAST函数将其转换为整数类型。同时,使用了inserted表来获取插入的数据。
sql server 编写触发器TR-5:分组数据更新 当删除学生数据时,删除分组表内相应的学生记录 创建完成后,删除学号为‘201215129’的记录
触发器 TR-5 的实现如下:
```sql
CREATE TRIGGER TR-5
ON dbo.Student
AFTER DELETE
AS
BEGIN
-- 删除分组表内相应的学生记录
DELETE FROM dbo.Grouping
WHERE StudentId IN (SELECT deleted.StudentId FROM deleted)
-- 删除学号为‘201215129’的记录
DELETE FROM dbo.Student
WHERE StudentId = '201215129'
END
```
该触发器会在删除学生表中的记录后触发,首先会删除分组表内与被删除学生相关的记录,然后再删除学号为‘201215129’的记录。其中,使用了 `deleted` 表来获取被删除的学生记录。
阅读全文