触发器(Trigger)(二)

转载 2007年09月20日 08:52:00

  触发器的种类

SQL Server 2005中,触发器可以分为两大类:DML触发器和DDL触发器

l  DML触发器:DML触发器是当数据库服务器中发生数据操作语言(Data Manipulation Language)事件时执行的存储过程。DML触发器又分为两类:After触发器和Instead Of触发器

l  DDL触发器:DDL触发器是在响应数据定义语言(Data Definition Language)事件时执行的存储过程。DDL触发器一般用于执行数据库中管理任务。如审核和规范数据库操作、防止数据库表结构被修改等。

  DML触发器的分类

SQL Server 2005DML触发器分为两类:

l  After触发器:这类触发器是在记录已经改变完之后(after),才会被激活执行,它主要是用于记录变更后的处理或检查,一旦发现错误,也可以用Rollback Transaction语句来回滚本次的操作。

l  Instead Of触发器:这类触发器一般是用来取代原本的操作,在记录变更之前发生的,它并不去执行原来SQL语句里的操作(InsertUpdateDelete),而去执行触发器本身所定义的操作。

 DML触发器的工作原理

SQL Server 2005里,为每个DML触发器都定义了两个特殊的表,一个是插入表,一个是删除表。这两个表是建在数据库服务器的内存中的,是由系统管理的逻辑表,而不是真正存储在数据库中的物理表。对于这两个表,用户只有读取的权限,没有修改的权限。

这两个表的结构与触发器所在数据表的结构是完全一致的,当触发器的工作完成之后,这两个表也将会从内存中删除。

插入表里存放的是更新前的记录:对于插入记录操作来说,插入表里存放的是要插入的数据;对于更新记录操作来说,插入表里存放的是要更新的记录。

删除表里存放的是更新后的记录:对于更新记录操作来说,删除表里存放的是更新前的记录(更新完后即被删除);对于删除记录操作来说,删除表里存入的是被删除的旧记录。

下面看一下触发器的工作原理。

 After触发器的工作原理

After触发器是在记录更变完之后才被激活执行的。以删除记录为例:当SQL Server接收到一个要执行删除操作的SQL语句时,SQL Server先将要删除的记录存放在删除表里,然后把数据表里的记录删除,再激活After触发器,执行After触发器里的SQL语句。执行完毕之后,删除内存中的删除表,退出整个操作。

还是举上面的例子:在产品库存表里,如果要删除一条产品记录,在删除记录时,触发器可以检查该产品库存数量是否为零,如果不为零则取消删除操作。看一下数据库是怎么操作的:

1)接收SQL语句,将要从产品库存表里删除的产品记录取出来,放在删除表里。

2)从产品库存表里删除该产品记录。

3)从删除表里读出该产品的库存数量字段,判断是不是为零,如果为零的话,完成操作,从内存里清除删除表;如果不为零的话,用Rollback Transaction语句来回滚操作。

  Instead Of触发器的工作原理

Instead Of触发器与After触发器不同。After触发器是在InsertUpdateDelete操作完成后才激活的,而Instead Of触发器,是在这些操作进行之前就激活了,并且不再去执行原来的SQL操作,而去运行触发器本身的SQL语句。

 

相关文章推荐

触发器,trigger

  • 2012-11-11 15:08
  • 479KB
  • 下载

unity3d 理解刚体(Rigidbody)和碰撞体(Collider)以及触发器(Is Trigger),边学边更新

做实验的时候发现了一个很诡异的事情,就是发生碰撞的主体一定是要带刚体的,即只有带刚体的碰撞体去撞其他碰撞体时,双方才会收到碰撞事件,以下是我做的实验: 一、控制A(刚体加碰撞体)撞击 静止的B(碰撞...
  • ybhjx
  • ybhjx
  • 2015-12-23 20:12
  • 676

深入浅出触发器(Trigger)

  • 2010-01-05 20:57
  • 2.12MB
  • 下载

触发器Trigger介绍

触发器简介         触发器是数据库的一种,编码方式类似于存储过程,当有DML语句对表进行操作的时候,可以引起触发器的执行,从而实现对表的数据一致性维护;         通过触发器...

cocos2d-x CocoStudio中场景触发器(Trigger)的使用和扩展

场景编辑器中的触发器是一种通过事件触发机制,在特定的事件被触发的时候自动执行自己预先定义的动作或者功能。 编辑器中带有一些默认的事件、条件和动作,当然也可以扩展自定义的事件、条件和动作。 ...

(05) 触发器(Trigger)的维护困境

触发器(trigger)在维护中的斑斑劣迹,我碰到的那是数不胜数.         首先不是说trigger不好,数据库都提供这个技术,自然有它的好处.  其中之一, 处理某些业务时特别简便.    ...

mysql触发器(Trigger)简明总结和使用实例

一,什么触发器 1,个人理解 触发器,从字面来理解,一触即发的一个器,简称触发器(哈哈,个人理解),举个例子吧,好比天黑了,你开灯了,你看到东西了。你放炮仗,点燃了,一会就炸了。 2,官方定义 ...

Oracle Trigger 触发器

Oracle Trigger 在Oracle8i之前,只允许给予表或者视图的的DML的操作,而从Oracle8i开始,不仅可以支持DML触发器,也允许给予系统事件和DDL的操作. 一、触发器的分类...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)