当前位置:Gxlcms > 数据库问题 > SQL简述--触发器

SQL简述--触发器

时间:2021-07-01 10:21:17 帮助过:3人阅读

触发器对表进行插入、更新、删除的时候会自动执行的特殊存储过程,它可以定义比CHECK约束更为复杂的约束,sql server 中触发器分为两类一类是DDL(数据定义语言如:create,alter,drop),一类是DML(数据操作语言如:select,delete,update,insert),我们平常使用一般是DML类型的触发器,这里主要讲述DML类型触发器。

DML类型的触发器分为两类:

1、After触发器

  After触发器要求只有执行某一操作insert、update、delete之后触发器才被触发,且只能定义在表上

2、Instead of触发器

   Instead of 触发器表示并不执行其定义的操作(insert、update、delete)而仅是执行触发器本身。既可以在表上定义instead of触发器,也可以在视图上定义

触发器常用的两张表介绍inserted和deleted

触发器有两个特殊的表:插入表(instered表)和删除表(deleted表),这两个表是只读的逻辑表(虚表),表结构总是和被写触发器的表结构相同,只存在系统内存中,不会存储在数据库中,触发器完成工作后,这两张表就会被删除。

Inserted表的数据是插入的数据或是修改后(更新后)的数据

deleted表的数据是被删除的数据或是修改前(更新前)的数据

语法

  1. <span style="color: #0000ff">CREATE</span> <span style="color: #0000ff">TRIGGER</span><span style="color: #000000"> trigger_name
  2. </span><span style="color: #0000ff">ON</span> {table_name <span style="color: #808080">|</span><span style="color: #000000"> view_name}
  3. {</span><span style="color: #0000ff">FOR</span> <span style="color: #808080">|</span> After <span style="color: #808080">|</span> Instead <span style="color: #0000ff">of</span> } <span style="color: #ff0000">[</span><span style="color: #ff0000"> insert, update,delete </span><span style="color: #ff0000">]</span>
  4. <span style="color: #0000ff">AS</span><span style="color: #000000">
  5. sql_statement </span>

 

1、触发器新增(insert)

业务场景:当表A新增数据的时候,同时将新增的数据插入到表B

  1. <span style="color: #0000ff">create</span> <span style="color: #0000ff">trigger</span><span style="color: #000000"> tri_lcsp_RYLZ
  2. </span><span style="color: #0000ff">on</span><span style="color: #000000"> A
  3. after </span><span style="color: #0000ff">insert</span>
  4. <span style="color: #0000ff">as</span>
  5. <span style="color: #0000ff">begin</span> <br><span style="color: #0000ff">insert</span> <span style="color: #0000ff">into</span><span style="color: #000000"> B (
  6. A018,</span><span style="color: #008080">--</span><span style="color: #008080">姓名</span><br>A420,<span style="color: #008080">--</span><span style="color: #008080">工号</span>
  7. A421,<span style="color: #008080">--</span><span style="color: #008080">部门</span>
  8. A422,<span style="color: #008080">--</span><span style="color: #008080">岗位</span>
  9. A426,<span style="color: #008080">--</span><span style="color: #008080">入职日期</span>
  10. A428,<span style="color: #008080">--</span><span style="color: #008080">离职日期</span>
  11. A424,<span style="color: #008080">--</span><span style="color: #008080">离职类型</span>
  12. A427,<span style="color: #008080">--</span><span style="color: #008080">离职原因</span>
  13. A425<span style="color: #008080">--</span><span style="color: #008080">oa流水号</span>
  14. <span style="color: #000000">)
  15. </span><span style="color: #0000ff">select</span><span style="color: #000000"> XM,RYBH,SZBM,GW,RZRQ,LZRQ,LZLX,LZYY,OALSH
  16. </span><span style="color: #0000ff">from</span><span style="color: #000000"> inserted
  17. </span><span style="color: #0000ff">end</span>

 2、触发器修改(update)

 3、触发器删除(deleted)

 4、触发器 instead of

 

SQL简述--触发器

标签:系统内存   span   into   入职   oal   dml   trigger   行触发器   删除表   

人气教程排行