9.1.2 创建触发器
2025年11月13日
图9.4 用存储过程统计课程C03的信息
9.1.2 创建触发器
按需求创建成绩数据变动(删除和修改)时备份原始数据的触发器tri_sc_del_upd,下面程序创建的触发器在成绩表sc的数据被修改或删除时,能自动利用SQLServer的deleted表将变动前的成绩数据以及变动的时间插入成绩数据变动表sc_change中,以备追踪。
create trigger tri_sc_del_upd on sc
for delete,update
as
declare@sno char(7),@cno char(5),@score tinyint
select@sno=sno,@cno=cno,@score=score from deleted
insert into sc_change(systime,sno,cno,score)
values(getdate(),@sno,@cno,@score)
print′原始成绩数据备份已完成!′
go
为了测试该触发器是否达到设计目标,可以实际修改或删除成绩表的记录数据,然后观察触发器是否动作,查询变动前记录是否插入sc_change表中。如图9.5所示为修改记录进行的测试。结果表明,该触发器响应修改事件的功能符合设计目标。提示读者:测试前须创建表sc_Change,它由Systime、Sno、Cno和Score四列组成,其中Systime是Datetime类型,其余三列与选课表SC的3个列相同。