加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

超具体的SqlServer数据库触发器总结

发布时间:2019-10-23 03:37:17 所属栏目:编程 来源:波波说运维
导读:【大咖·来了 第7期】10月24日晚8点寓目《智能导购对话呆板人实践》 触发器(trigger)是SQL server 提供应措施员和数据说明员来担保数据完备性的一种要领,它是与表变乱相干的非凡的存储进程,它的执行不是由措施挪用,也不是手工启动,而是由变乱来触发,当

用户执行delete操纵,就会激活delete触发器,从而节制用户可以或许从数据库中删除数据记录,触发delete触发器后,用户删除的记录会被添加到deleted表中,原本表的响应记录被删除,以是在deleted表中查察删除的记录。

  1. --建设delete触发器 
  2. create trigger trig_delete 
  3. on student  
  4. after delete 
  5. as 
  6. begin 
  7.  select stu_id as 已删除的门生编号,stu_name stu_gender,stu_age 
  8.  from deleted 
  9. end; 
  10. --执行逐一条delete语句触发trig_delete触发器 
  11. delete from student where stu_id=1; 

4. 建设UPDATE触发器

update触发器是当用户在指定表上执行update语句时被挪用被挪用,这种范例的触发器用来束缚用户对数据的修改。update触发器可以执行两种操纵:更新前的记录存储在deleted表中,更新后的记录存储在inserted表中。

  1. --建设update触发器 
  2. create trigger trig_update 
  3. on student 
  4. after update 
  5. as 
  6. begin 
  7.  declare @stuCount int; 
  8.  select @stuCount=count(*) from student; 
  9.  update student_sum set stuCount =@stuCount; 
  10.  select stu_id as 更新前门生编号,stu_name as 更新前门生姓名 from deleted 
  11.  select stu_id as 更新后门生编号,stu_name as 更新后门生姓名 from inserted 
  12. end 
  13. --建设完成,执行一条update语句触发trig_update触发器 
  14. update student set stu_name='张飞' where stu_id=2; 

五、打点触发器

1. 查察触发器

(1).查察数据库中全部的触发器

  1. --查察数据库中全部的触发器 
  2. use 数据库名 
  3. go 
  4. select * from sysobjects where xtype='TR' 

sysobjects 生涯着数据库的工具,个中 xtype 为 TR 的记录即为触发器工具。在 name 一列,我们可以看到触发器名称。

(2).sp_helptext 查察触发器内容

  1. use 数据库名 
  2. go 
  3. exec sp_helptext '触发器名称' 

将会以表的样式表现触发器内容。

除了触发器外,sp_helptext 还可以表现 法则、默认值、未加密的存储进程、用户界说函数、视图的文本。

(3).sp_helptrigger 用于查察触发器的属性

sp_helptrigger 有两个参数:第一个参数为表名;第二个为触发器范例,为 char(6) 范例,可所以 INSERT、UPDATE、DELETE,假如省略则表现指定表中全部范例触发器的属性。

  1. use 数据库名 
  2. go 
  3. exec sp_helptrigger tableName 

2. 禁用启用触发器

  • 禁用:alter table 表名 disable trigger 触发器名称
  • 启用:alter table 表名 enable trigger 触发器名称

假若有多个触发器,则各个触发器名称之间用英文逗号离隔。

假如把“触发器名称”换成“ALL”,则暗示禁用或启用该表的所有触发器。

3. 修改触发器

  1. --修改触发器语法 
  2. ALTER TRIGGER trigger_name  
  3.  ON table_name  
  4.  [ WITH ENCRYPTION ]  
  5.  FOR {[DELETE][,][INSERT][,][UPDATE]} 
  6.  AS 
  7.  sql_statement; 

4. 删除触发器

  1.  --语法名目: 
  2.  DROP TRIGGER { trigger } [ ,...n ] 
  3. 参数: 
  4.  trigger: 要删除的触发器名称 
  5.  n:暗示可以删除多个触发器的占位符  

【编辑保举】

  1. MySQL数据库怎样快速得到库中无主键的表
  2. 商用数据库之死:Oracle 面对逆境
  3. 保举MySQL数据库中停止写入一再数据的4种方法
  4. MySQL数据库基本操纵呼吁
  5. 微处事的数据库计划
【责任编辑:赵宁宁 TEL:(010)68476606】
点赞 0

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读