求一sql server触发器设计(非常简单)

来源:百度知道 编辑:UC知道 时间:2024/06/11 22:11:50
设计一个触发器,功能是记录用户对学生信息表和学生成绩表进行的所有操作,包括时间,表名称,操作类型(添加,删除,更改)

附:studentdb数据库表结构
(1)学生信息表student
序号 字段名 数据类型 可空 主键
1 Id 学号 Varchar(10) N PK
2 Name 姓名 Varchar(10) N
3 Sex 性别 Varchar(2) N
4 Birthday 出生日期 Date Y
(2)学生成绩表score
序号 字段名 数据类型 可空 主键
1 Id 学号 Varchar(10) N PK
2 Course_id 课程编号 Varchar20) N PK
3 Score 成绩 Tinyint N

create trigger tr_GradesChanged on 学生 for delete,insert,update
as
declare @insertedCount int
declare @deletedCount int
declare @changeType char(10)
declare @changeTime datetime
declare @updateType char(4)
/*在ms sql server中有两个临时表保存着被删除和被插入的记录,分别叫“deleted”,“inserted”。update可以看作一次删除和一次添加*/
select @insertedCount=count(*) from inserted
select @deletedCount=count(*) from deleted
select @changeType=
case
when @insertedCount>0 and @deletedCount>0
then 'update'
when @insertedCount=0 and @deletedCount>0
then 'delete'
else 'insert'
end
select @changeTime=getdate()
select @updateType=''
if @changeType='update' select @updateType=' old'

insert into 历史记录表(changeType,changeTime,studentID,courseID,grade) select @changeType+@updateType, @changeTime,studentI