概述
触发器概述
触发器是一个特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是当某一事件发生时触发,例如当表执行deletet insert update时就会被执行。触发器是用来维护表数据的完整性
触发器分为:
after触发器(之后触发)
instead of 触发器 (之前触发)
触发器里有两章特殊的表插入表(instered表)和删除表(deleted表),这两张是逻辑表也是虚表。有系统在内存中创建者两张表,不会存储在数据库中。而且两张表的都是只读的,只能读取数据而不能修改数据。这两张表的结果总是与被改触发器应用的表的结构相同。当触发器完成工作后,这两张表就会被删除。Inserted表的数据是插入或是修改后的数据,而deleted表的数据是更新前的或是删除的数据。
使用触发器的优点
使用触发器有如下优点:
自动执行。触发器在对表的数百据作了任何修改(比如手工输入或者应用程度序的操作)之后立即被激活。
级联更新。触发器可以通过数据库中的相关表进行层叠更改,这比直接把问代码写在前台的做法更安全合理。
强化约束。触发器可以引用其它表中的列,能够实现答比CHECK约束更为复杂的约束。
跟踪变化。触发器可以阻止数据库中未经许可版的指定更新和变化。
强制业务逻辑。触发器可用于执行管权理任务,并强制影响数据库的复杂业务规则。
建立两个表及关系
–新增
–go
–create trigger tri_add
–on books for insert
–as
– declare @typeid int
– select @typeid=TypeID from inserted --系统自带的表,保存新增的数据
–update BookTypes set nums=Nums+1 where id=@typeid
–删除
–go
–create trigger tri_del
–on books for delete
–as
– declare @typeid int
– select @typeid=TypeID from deleted --系统自带的表,保存新增的数据
–update BookTypes set nums=Nums-1 where id=@typeid
–修改
go
create trigger tri_upda
on books for update
as
declare @typeid int
declare @newTypeID int
select @typeid=TypeID from deleted
update BookTypes set Nums=Nums-1 where id=@typeid
select @newTypeID=TypeID from inserted
update BookTypes set Nums=Nums+1 where id=@newTypeID
update books set TypeID=2 where id=3
最后
以上就是飘逸菠萝为你收集整理的触发器的使用的全部内容,希望文章能够帮你解决触发器的使用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复