触发器(Trigger)(四)

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

设计After触发器

在了解触发器及其种类、作用、工作原理之后,下面详细讲述一下要怎么去设计及建立触发器。

 设计简单的After触发器

下面用实例设计一个简单的After Insert触发器,这个触发器的作用是:在插入一条记录的时候,发出又添加了一种产品的友好提示。

1)启动Management Studio,登录到指定的服务器上。

2)在如图1所示界面的【对象资源管理器】下选择【数据库】,定位到【Northwind】数据库à【表】àdbo.产品】,并找到【触发器】项。

1 定位到触发器

3)右击【触发器】,在弹出的快捷菜单中选择【新建触发器】选项,此时会自动弹出【查询编辑器】对话框,在【查询编辑器】的编辑区里SQL Server已经预写入了一些建立触发器相关的SQL语句,如图11.2所示。

2 SQL Server 2005预写的触发器代码

4)修改【查询编辑器】里的代码,将从“CREATE”开始到“GO”结束的代码改为以下代码:

CREATE TRIGGER 产品_Insert

   ON  产品

   AFTER INSERT

AS

BEGIN

         print '又添加了一种产品'

END

GO

如果有兴趣的话,也可以去修改一下如图11.2中绿色部分的版权信息。

5)单击工具栏中的【分析】按钮 ,检查一下是否语法有错,如图11.3所示,如果在下面的【结果】对话框中出现命令已成功完成,则表示语法没有错误。

3 检查语法

6)语法检查无误后,单击【执行】按钮,生成触发器。

7)关掉查询编辑器对话框,刷新一下触发器对话框,可以看到刚才建立的【产品_Insert】触发器,如图4所示。

4 建好的触发器

建立After Update触发器、After Delete触发器和建立After Insert触发器的步骤一致,不同的地方是把上面的SQL语句中的AFTER INSERT分别改为AFTER UPDATEAFTER DELETE即可,如下所示,有兴趣的读者可以自行测试。

CREATE TRIGGER 产品_Update

   ON  产品

   AFTER UPDATE

AS

BEGIN

         print '有一种产品更改了'

END

GO

CREATE TRIGGER 产品_Delete

   ON  产品

   AFTER DELETE

AS

BEGIN

         print '又删除了一种产品'

END

GO

  测试触发器功能

建好After Insert触发器之后,现在来测试一下触发器是怎么样被激活的。

1)在Management Studio里新建一个查询,在弹出的【查询编辑器】对话框里输入以下代码:

INSERT INTO 产品(产品名称) VALUES ('大苹果')

2)单击【执行】按钮,可以看到【消息】对话框里显示出一句提示:又添加了一种产品,如图11.5所示,这说明,After Insert触发器被激活,并运行成功了。

5 查看触发器的运行结果

而如果在【查询编辑器】里执行的不是一个Insert语句,而是一个Delete语句的话,After Insert触发器将不会被激活。如在【查询编辑器】输入以下语句:

DELETE FROM 产品 WHERE (产品名称= '大苹果')

单击【执行】按钮,在【消息】对话框里只显示了一句“(1行受影响)”的提示,而没有又添加了一种产品的提示,如图6所示。这是因为Delete语句是不能激活After Insert触发器,所以After Insert触发器里的“print ‘又添加了一种产品’”语句并没有执行。

6 执行删除语句不会激活After Insert触发器

 

相关文章推荐

触发器,trigger

  • 2012年11月11日 15:08
  • 479KB
  • 下载

触发器的PPT文档Trigger PPT document

  • 2009年06月23日 23:41
  • 2.12MB
  • 下载

MySQL触发器Trigger实例篇

MySQL触发器Trigger实例篇 发表于668 天前 ⁄ IT技术 ⁄ 暂无评论 以前关注的数据存储过程不太懂其中奥妙,最近遇到跨数据库,同时对多个表进行CURD(Create...
  • hireboy
  • hireboy
  • 2014年01月10日 11:45
  • 25910

Oracle12c中多宿主环境(CDB&PDB)的数据库触发器(Database Trigger)

oracle12c引入了多宿主选项(multitenant),即出现了CDB和PDB的概念和应用,这也会对其他方方面面的特性和应用带来不小的影响和改变,本文通过实例演示,说明了在引入多宿主选项后,触发...
  • LHDZ_BJ
  • LHDZ_BJ
  • 2016年03月01日 16:56
  • 670

oracle trigger(触发器)字段触发

说到oracle的触发器,一直以来都以为只能以表触发,今天有需求某个字段的值改变后触发一系列动作,原来想这个表改变再触发,后来想了一下,触发器本来很耗性能,如果这个表的每个字段更改都触发,这样做就造成...
  • diyyong
  • diyyong
  • 2014年01月21日 15:28
  • 9276

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

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

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

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

Unity 理解刚体(Rigidbody)和碰撞体(Collider)和触发器(Is Trigger)以及刚体休眠(Rigidbody Sleeping)

前言:      今天看到看到了 Rigidbody Sleeping这个知识点,解决了我疑惑很久的一个物理学的问题。本来笔者遇到问题会想办法去解决的,但是那是想了蛮久也没想通为什么两个物体碰撞...
  • U3D_YSJ
  • U3D_YSJ
  • 2015年08月27日 00:05
  • 1631

触发器Trigger介绍

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

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

场景编辑器中的触发器是一种通过事件触发机制,在特定的事件被触发的时候自动执行自己预先定义的动作或者功能。 编辑器中带有一些默认的事件、条件和动作,当然也可以扩展自定义的事件、条件和动作。 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:触发器(Trigger)(四)
举报原因:
原因补充:

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