我是靠谱客的博主 简单河马,最近开发中收集的这篇文章主要介绍数据库之触发器,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

数据库之触发器

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表相当于存储中间的值,可以像一般表一样查询。
触发器可以禁止删除、插入、更新,也可以完成删除、插入、更新之后的操作。

最后

以上就是简单河马为你收集整理的数据库之触发器的全部内容,希望文章能够帮你解决数据库之触发器所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部