题目一:INSERT触发器,在学生表(Stu)插入一条新数据的时候触发,学生课程表(Stu_Course)增加三条记录,新学生加入语文、数学、英语三门课程
CREATE TRIGGER INSERT_Stu_Course ON dbo.Stu
AFTER INSERT
AS
BEGIN
--定义两个变量 @studentid,@studentname DECLARE @studentid INT; DECLARE @studentname VARCHAR(50);
--给两个变量赋值
Inserted 表为 学生表执行插入操作之后的临时表(存储插入后的数据)
SELECT @studentid=studentid FROM Inserted;
SELECT @studentname=studentname FROM Inserted;
--给学生课程表插入三条记录,新学生加入语文、数学、英语三门课程
INSERT dbo.Stu_Course ( studentid, courseid, studentname ) VALUES ( @studentid, -- studentid - int 101, -- courseid - int @studentname -- studentname - nvarchar(50) );
INSERT dbo.Stu_Course ( studentid, courseid, studentname ) VALUES ( @studentid, -- studentid - int 102, -- courseid - int @studentname -- studentname - nvarchar(50) );
INSERT dbo.Stu_Course ( studentid, courseid, studentname ) VALUES ( @studentid, -- studentid - int 103, -- courseid - int @studentname -- studentname - nvarchar(50) );
END GO
题目二:删除触发器,删除学生表的一条记录,同时删除改学生的学生课程表的记录
CREATE TRIGGER DELETE_Stu
ON dbo.Stu
AFTER DELETE
AS
BEGIN
--定义一个变量,@studentid
DECLARE @studentid INT;
--给变量赋值 @studentid,表deleted是在执行删除操作之前的临时表用来存储操作之前的记录。
SELECT @studentid=studentid FROM Deleted;
DELETE dbo.Stu_Course WHERE studentid=@studentid;
END GO
题目三:update触发器,更改学生表Stu中的学生编号,学生课程表(Stu_Course)的学生编号也随之改变
CREATE TRIGGER UPDATE_Stu
ON dbo.Stu
AFTER UPDATE
AS
BEGIN
--定义变量
@studentid DECLARE @studentid INT;
--给@studentid 赋值 DELETED表用来存储操作之后的记录的临时表
SELECT @studentid=studentid FROM inserted
UPDATE dbo.Stu_Course SET studentid=@studentid
END
GO