表中打印出所要删除的学生.在执行,一个表的每

SQL Server:触发器安详严整

 

SQL Server:触发器精解

 

  • 1. 概述
  • 2. 触发器的分类
  • 3. Inserted和Deleted表
  • 4. 触发器的试行进度
  • 5. 创办触发器
  • 6. 更改触发器:
  • 7. 删减触发器:
  • 8. 翻看数据库中原来就有触发器:
  • 9. “Instead of”相关示例:
  • 10. “After”触发器
  • 11. 参照能源

1. 概述

触发器是意气风发种新鲜的仓储进度,它不可能被显式地调用,而是在往表中插入记录﹑更新记录恐怕去除记录时被电动地激活。 所以触发器能够用来促成对表实施复杂的完整性约束。

1. 概述

触发器是大器晚成种特有的蕴藏进程,它不能够被显式地调用,而是在往表中插入记录﹑更新记录恐怕去除记录时被机关地激活。 所以触发器能够用来促成对表实践复杂的完整性节制。

2. 触发器的分类

SQL Server2001提供了三种触发器:“Instead of” 和“After” 触发器。

贰个表或视图的每四个改换改作(Insert、Update和Delete卡塔尔(英语:State of Qatar)都足以有三个“Instead of” 触发器,一个表的各种改良动作都得以有三个“After”触发器。

2. 触发器的归类

SQL Server二〇〇四提供了二种触发器:“Instead of” 和“After” 触发器。

二个表或视图的每一种改变动作(Insert、Update和Delete卡塔尔国都得以有三个“Instead of” 触发器,八个表的每种纠正动作都足以有两个“After”触发器。

2.1 “Instead of”触发器

  • “Instead of”触发器在施行真正“插入”在此之前被实行。除表之外,“Instead of” 触发器也足以用于视图,用来扩展视图可以支撑的翻新操作。
  • “Instead of”触发器会替代所要施行的SQL语句,言下之意便是所要实践SQL并不会“真正实践”
alter trigger trigger_学生_Delete
on 学生
instead of Delete
as
begin 
    select 学号, 姓名 from deleted
end

delete from 学生 where 学号 = 4

上例中定义了“trigger学子_Delete”触发器,该触发器从“delete”表中打字与印刷出所要删除的学子.在执行“delete”操作后,会发觉“学号 = 4”的学子未有被删除, 原因在于“trigger学生Delete”代替了所要推行的“delete from 学子 where 学号 = 4”语句,而在“trigger学子_Delete”中从不真正删除学子。

2.1 “Instead of”触发器

  • “Instead of”触发器在施行真正“插入”此前被实行。除表之外,“Instead of” 触发器也能够用来视图,用来增添视图能够帮助的更新操作。
  • “Instead of”触发器会替代所要执行的SQL语句,言下之意正是所要实践SQL并不会“真正实行”

 

上例中定义了“trigger学子_Delete”触发器,该触发器从“delete”表中打字与印刷出所要删除的学子.在进行“delete”操作后,会开掘“学号 = 4”的学习者从未被删除, 原因在于“trigger学子Delete”替代了所要实践的“delete from 学子 where 学号 = 4”语句,而在“trigger学生_Delete”中从不真的删除学子。

2.2 “After”触发器

  • “After”触发器在Insert、Update或Deleted语句施行之后被触发。“After”触发器只好用于表。
  • “After”触发器首要用于表在改过后(insert、update或delete操作之后),来改良别的表

2.2 “After”触发器

  • “After”触发器在Insert、Update或Deleted语句推行之后被触发。“After”触发器只可以用于表。
  • “After”触发器主要用以表在纠正后(insert、update或delete操作之后),来改良其余表

3. Inserted和Deleted表

SQL Server为各样触发器都创建了七个专用表:Inserted表和Deleted表。

  • 那七个表由系统来保卫安全,它们存在于内存中并非在数据库中,可以看到为二个伪造的表。
  • 那多个表的协会总是与被该触发器成效的表的构造相像。
  • 触发器履行到位后,与该触发器相关的这四个表也被删去。
  • Deleted表寄存由于进行Delete或Update语句而要从表中删除的持有行。
  • Inserted表寄存由于实行Insert或Update语句而要向表中插入的兼具行。
对表的操作 Inserted逻辑表 Deleted逻辑表
增加记录(insert) 存放增加的记录
删除记录(delete) 存放被删除的记录
修改记录(update) 存放更新后的记录 存放更新前的记录

3. Inserted和Deleted表

SQL Server为各种触发器都成立了多个专项使用表:Inserted表和Deleted表。

  • 那三个表由系统来保证,它们存在于内部存款和储蓄器中实际不是在数据库中,可以知晓为贰个杜撰的表。
  • 那多少个表的构造总是与被该触发器效能的表的构造相符。
  • 触发器推行到位后,与该触发器相关的那多个表也被删除。
  • Deleted表存放由于试行Delete或Update语句而要从表中删除的有所行。
  • Inserted表贮存由于实施Insert或Update语句而要向表中插入的具备行。
对表的操作 Inserted逻辑表 Deleted逻辑表
增加记录(insert) 存放增加的记录
删除记录(delete) 存放被删除的记录
修改记录(update) 存放更新后的记录 存放更新前的记录

4. 触发器的实行进程

  • 如若叁个Insert﹑update也许delete语句违反了自律,那么那条SQL语句就不曾进行成功,因而“After”触发器也不会被激活。

  • “Instead of” 触发器能够代表激发它的操作来实践。它在Inserted表和Deleted表刚刚建设布局,别的任何操作还从未生出时被实践。因为“Instead of” 触发器在封锁早先实践,所以它能够对约束举行部分预管理。

4. 触发器的奉行进度

  • 若是二个Insert﹑update大概delete语句违反了束缚,那么那条SQL语句就从未实行成功,因而“After”触发器也不会被激活。

  • “Instead of” 触发器能够代表激发它的操作来实施。它在Inserted表和Deleted表刚刚创建,别的任何操作还平素不生出时被施行。因为“Instead of” 触发器在约束以前实行,所以它能够对约束进行一些预管理。

5. 创设触发器

create trigger trigger_name 
on  {table_name|view_name} 
{After|Instead of} {insert|update|delete}
as 相应T-SQL语句

5. 创设触发器

create trigger trigger_name

on  {table_name|view_name}

{``After``|``Instead of``} {``insert``|``update``|``delete``}

as 相应T-SQL语句

6. 更动触发器:

alter trigger trigger_name 
on  {table_name|view_name} 
{After|Instead of} {insert|update|delete}
as 相应T-SQL语句

6. 校正触发器:

alter trigger trigger_name

on  {table_name|view_name}

{``After``|``Instead of``} {``insert``|``update``|``delete``}

as 相应T-SQL语句

7. 去除触发器:

drop trigger trigger_name 

7. 刨除触发器:

drop trigger trigger_name

8. 翻看数据库中本来就有触发器:

8. 翻看数据库中原来就有触发器:

8.1 查看数据库中享有触发器

select * from sysobjects where xtype='TR' 

本文由必威发布于必威-数据,转载请注明出处:表中打印出所要删除的学生.在执行,一个表的每

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。