触发器的定义:触发器是一种特殊类型的存储过程,他不同于前面介绍过的一般的存储过程(在SQL内部把触发器看做是存储过程但是不能传递参数).一般的存储过程通过存储过程名称被直接调用,而触发器主要是通过事件进行触发而被执行.总的来说,触发器是一种功能强大的工具,在表中数据发生变化时自动强制执行,触发器还可以用于sqlserver约束.默认值和规则的完整性检查,还可以完成难以用普通约束实现的复杂功能
触发器的作用:
自动化操作,减少了手动操作及出错的几率
小知识点:在sqlserver数据库中隐藏的两个表
inserted,deleted表.
inserted表:当执行insert语句时,添加的数据也会加到inserted表中
deleted表:当执行delete from时,数据会放置到deleted表中.
注意,当update时,先将语句删除到deleted表中,然后在将新的数据插入到inserted表及目的表.
触发器多用于数据备份
创建一个表,表的机构和原表结构一样,但是没有数据
select top 0 into nStu from stu //复制表stu的结构至nStu表
触发器案例:当删除学生表中的数据的同时,把删除的这个数据存放到我的新表中.
create trigger tr_stuTrigger on stu//注意触发器的写法已tr_开头
after delete
as
begin
insert into nStu select * from deleted
end
触发器的使用建议:尽量避免在触发器中执行耗时,复杂的操作,因为触发器会与sql语句认为在同一个事务中,事务不结束,就无法释放锁.触发器编写时要多注意对多行触发时的处理.