MySQL数据库原理与应用 课件 第8章 触发器_第1页
MySQL数据库原理与应用 课件 第8章 触发器_第2页
MySQL数据库原理与应用 课件 第8章 触发器_第3页
MySQL数据库原理与应用 课件 第8章 触发器_第4页
MySQL数据库原理与应用 课件 第8章 触发器_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

在实际应用中,触发器在以下方面非常有用:利用触发器可以防止误操作的INSERT、UPDATAE以及DELETE操作。触发器可以评估数据修改前后表的状态,并根据该差异采取对应的措施。触发器可以实现表数据的级联更改,在一定程度上保证数据的完整性,例如当删除某个学生时,他所对应的成绩等信息也应该一并删除。利用触发器可以记录某些操作事件。例如当对指定的表进行数据操作时,可以利用触发器来记录被操作的数据,这样该记录可以被当作日志使用。8.1概述8.2创建触发器8.2.1创建触发器的语法形式CREATE

TRIGGER

trigger_name

trigger_time

trigger_event

ON

tbl_name

FOR

EACH

ROW

trigger_bodytrigger_name:表示触发器名称,由用户自行指定。trigger_time:表示触发器被触发的时刻,可以指定为before或after,before表示触发器是在激活它的语句之前触发,而after表示触发器是在激活它的语句之后触发。trigger_event:表示触发器的触发事件,用于指定激活触发器的语句的种类。tbl_name:表示建立触发器的表名,即在哪张表上建立触发器。同一个表不能同时拥有两个具有相同触发时刻和事件的触发器。FOR

EACH

ROW:指行级触发器(在其他的数据库中可能存在其他级别的触发器),即对于受触发事件影响的每一行都要激活触发器的动作。trigger_bodty:指触发器执行语句,即触发器激活时将要执行的MySQL语句。8.2创建触发器1.

创建触发器的语法形式【例8-1】在数据库sailing的OrderDetails表中创建一个名为ins_sum的触发器,触发的条件是向表OrderDetails中插入数据前,对新插入的BuyPrice字段求和。1在MySQL命令行客户端输入如下SQL语句mysql

>

CREATE

TRIGGER

ins_sum

BEFORE

INSERT

ON

OrderDetailsFOR

EACH

ROW

SET

@sum

=

@sum

+

NEW.BuyPrice;2在MySQL命令行客户端使用INSERT语句向表OrderDetails中插入数据mysql

>INSERT

INTO

OrderDetails

VALUES(1,3,2,2000),

(1,4,1,2200);3在MySQL命令行客户端输入如下语句验证触发器mysql

>SELECT

@SUM;+++|

@sum

|+|

4200

|++1

row

in

set

(0.00

sec)1.

创建触发器的语法形式【例8-2】针对Shippers表分别创建BEFORE

INSERT、AFTER

INSERT触发器,使得向

Shippers表插入新记录从而触发相应触发器时,均向新建表tri_demo增加一条相应的记录,以观察触发器的触发情况。1在MySQL命令行客户端输入语句创建一个名为tri_demo的新表;2在MySQL命令行客户端输入语句,使得触发Shippers表BEFORE

INSERT触发器的同时,向tri_demo表的note字段添加‘before

insert’信息;3在MySQL命令行客户端输入语句,使得触发Shippers表AFTER

INSERT触发器的同时,向tri_demo表的note字段添加‘after

insert’信息;4观察向Shippers表插入新纪录时,触发器触发状况。8.2创建触发器8.2.2利用工具创建触发器【例8-3】利用图形工具为表Shippers创建名为upd_shippers_bef的BEFORE

UPDATE类型触发器,当为表Shippers修改数据时激发该触发器,并在表tri_demo中插入一条相应的新记录(其note字段值为"before

update")。8.2创建触发器在Sailing数据库左窗格中单击shippers表单击右窗格右上角的“触发器”按钮单击右窗格左下角的“添加触发器”按钮在弹出的“编辑触发器”对话框中输入创建相应触发器的信息,单击“执行”即可【例8-4】通过SHOW

TRIGGERS命令查看触发器状况。8.3查看触发器8.3.1通过SHOW

TRIGGERS语句查看触发器通过执行SHOW

TRIGGERS命令可查看触发器的状态、语法等信息,其语法格式如下:mysql

>SHOW

TRIGGERS

\G;该语句因为不能查询指定的触发器,所以每次都返回所有的触发器的信息在触发器较少的情况下,使用该语句会很方便【例8-5】查看名为"ins_shippers_bef"的触发器。8.3查看触发器8.3.2通过系统表triggers查看触发器如要查看特定触发器信息,可通过SELECT查询命令直接从triggers表中查看,其语法结构如下:SELECT

*

FROM

INFORMATION_SCHEMA.TRIGGERS

WHERE

condition;8.4删除触发器8.4.1通过DROP

TRIGGER语句删除触发器可以通过DROP

TRIGGER命令删除触发器,其语法格式如下:DROP

TRIGGER

[

IF

EXISTS

]

[

schema_name.

]

trigger_nameIF

EXISTS:可选项,用于避免在没有触发器的情况下删除触发器schema_name:可选项,用于指定触发器所在的数据库的名称。如果缺省,则为当前数据库trigger_name:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论