什么是触发器?
在sql server中对每一个表达一定操作,出发某种条件,从而执行的一段程序。触发器是一个特殊的存储过程。
常见的触发器有三种:分别应用于insert,update,delete事件。
触发器举例:
实现的功能是:如果我修改了学生表中的学号,那么我希望结束表中的学生号也同时更改。如果该生毕业,则删除该生学号的同时,也删除他的借书记录。
SQL语言: 创建一个update触发器
create trigger updatestu //触发器的名字
on student //在student表上建立的触发器
for update//什么时候触发
as //事件触发后所要做的事情
if update(studentId)
begin
update borrowRecord
set studentId=inserted.studentId
from borrowRecord,deleted,inserted
where borrowRecord.studentId=deleted.studentId//注意这里的条件
end
on student //在student表上建立的触发器
for update//什么时候触发
as //事件触发后所要做的事情
if update(studentId)
begin
update borrowRecord
set studentId=inserted.studentId
from borrowRecord,deleted,inserted
where borrowRecord.studentId=deleted.studentId//注意这里的条件
end
注意:数据库系统中在执行触发器的时候会有两个虚拟表用于存储表中记录改动的信息,分别是deleted ,inserted分别表示表的旧一条记录,和新的一条记录。
如果执行的是新增记录那么inserted中存放的是新增的记录,如果执行的修改操作,那么inserted表中存放的修改之后的记录,deleted中存放的是修改之前的记录。如果执行的删除操作,那么临时表中存放的是删除的记录。
SQL语言: delete触发器
create trigger deleteStu
on student
for delete
as
delete borrowRecord from borrowRecord,deleted
where borrowRecord.studentId=deleted.studentId
on student
for delete
as
delete borrowRecord from borrowRecord,deleted
where borrowRecord.studentId=deleted.studentId
2009/04/03 | sunny | 381 Views