概述
数据库之触发器
1.概述
触发器是特殊的存储过程。存储过程是由用户主动去调用执行,触发器是数据库在发生一些事件的时候主动调用。
常见的触发器(SQL Server)有instead of 和 after(for)
-
instead of 触发器代替用于触发触发器的sql语句。它可以用于表或者视图。
-
after(for)触发器则是在数据库update、insert、deleted之后执行。它只可以用于表
数据库为触发器特别的建立两张表 inserted表、deleted表
这两张表由数据库维护,存在内存中,它的字段与要操作的表一致。当触发器执行完之后,这两张表也会被销毁。
- inserted表是在数据库insert或者update的时候生成,用于存放向表中插入的所有行。
- deleted 表是在数据库deleted或者update的时候生成,用于存放从表中删除的所有行。
2、触发器过程
- 插入操作过程:在插入表的同时,将插入的内容放入instead表。
- 删除操作过程:将原表删除的内容放入deleted表。
- 更新操作过程:先将要更新的内容放入deleted表中,然后将更新的内容分别放入原表和inserted表。
3.实现语法
create trigger 名字 on 操作表
for|after or instead of
update|insert|delete
as
SQL语句
例子(SQL Server)
插入学生信息到学生表。inserted of触发器 查询inserted表
create trigger test_trigger on student
instead of insert as
select * from inserted
go
insert student(SNO,SNAME,SEX,AGE,DNO) values('20000010','李四','男','20','0001')
go
select * from student where SNO='20000010'
数据并没有插入到student表。inserted表是要插入的内容。
删除学生信息时触发器更改学生的年龄并查询deleted表
create trigger sd
on student
instead of delete as
begin
update student set AGE=AGE+1 where SNO=(select SNO from deleted)
select * from deleted
end
go
delete student where SNO='20000013'
select * from student where SNO='20000013'
数据并没有被删除而是年龄加1
删除触发器
drop trigger 触发器名字
4.总结
触发器是事件(update、deleted、inserte)发生的时候自动执行。inserted表、deleted表相当于存储中间的值,可以像一般表一样查询。
触发器可以禁止删除、插入、更新,也可以完成删除、插入、更新之后的操作。
最后
以上就是简单河马为你收集整理的数据库之触发器的全部内容,希望文章能够帮你解决数据库之触发器所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复