版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
信息学院第8章触发器1
8.1概述8.2创建触发器8.3查看触发器8.4删除触发器主要内容MySQL中,触发器与表的关系十分密切,用于保护表中的数据。它只能由数据库的特定事件来触发,并且不能接受参数。当有操作影响到触发器所保护的数据时,具体来说就是该数据表有插入(INSERT)、更改(UPDATAE)或删除(DELETE)事件发生时,所设置的触发器就会自动被执行。因此它除了进行数据处理外,也可以维护数据的完整性,以及多个表之间数据的一致性;同时,利用触发器还可以得到数据变更的日志记录,是管理数据的有力工具。8.1概述在实际应用中,触发器在以下方面非常有用:利用触发器可以防止误操作的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创建触发器创建触发器的语法形式【例8-1】在数据库sailing的OrderDetails表中创建一个名为ins_sum的触发器,触发的条件是向表OrderDetails中插入数据前,对新插入的BuyPrice字段求和。在MySQL命令行客户端输入如下SQL语句mysql
>
CREATE
TRIGGER
ins_sum
BEFORE
INSERT
ON
OrderDetailsFOR
EACH
ROW
SET
@sum
=
@sum
+
NEW.BuyPrice;在MySQL命令行客户端使用INSERT语句向表OrderDetails中插入数据mysql
>INSERT
INTO
OrderDetails
VALUES(1,3,2,2000),
(1,4,1,2200);在MySQL命令行客户端输入如下语句验证触发器mysql
>SELECT
@SUM;+
+|
@sum
|+
+|
4200
|+
+1
row
in
set
(0.00
sec)创建触发器的语法形式【例8-2】针对Shippers表分别创建BEFORE
INSERT、AFTER
INSERT触发器,使得向Shippers表插入新记录从而触发相应触发器时,均向新建表tri_demo增加一条相应的记录,以观察触发器的触发情况。在MySQL命令行客户端输入语句创建一个名为tri_demo的新表;在MySQL命令行客户端输入语句,使得触发Shippers表BEFORE
INSERT触发器的同时,向tri_demo表的note字段添加‘before
insert’信息;在MySQL命令行客户端输入语句,使得触发Shippers表AFTER
INSERT触发器的同时,向tri_demo表的note字段添加‘after
insert’信息;观察向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[IFEXISTS][schema_name.]trigger_nameIF
EXISTS:可选项,用于避免在没有触发器的情况下删除触发器schema_name:可选项,用于指定触发器所在的数据库的名称。如果缺省,则为当前数据库tr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年郑州市郑盐盐业集团有限公司招聘一批工作人员考试备考题库及答案解析
- 2026河南商丘市直机关事业单位公益岗位招聘13人笔试备考题库及答案解析
- 2026黑龙江哈尔滨工业大学机电工程学院机械设计系招聘笔试备考题库及答案解析
- 2026湖北武汉人才服务发展有限公司招聘派往武汉市国企工作笔试备考题库及答案解析
- 2026年内蒙古科技职业学院单招职业适应性测试题库有答案详细解析
- 2026青海湟水文化产业有限公司招聘6名笔试模拟试题及答案解析
- 2026宁夏银川市永宁县卫生健康系统第一期专业技术人员自主招聘59人笔试备考试题及答案解析
- 2026云南临沧永德县人力资源和社会保障局招聘就业见习人员30人考试备考题库及答案解析
- 2026浙江事业单位统考玉环市招聘59人笔试模拟试题及答案解析
- 贵州省重点名校2026届初三第一次教学质量检测试题语文试题试卷含解析
- 企业内部福利待遇制度
- 钢丝pe施工方案(3篇)
- 2026年医疗AI辅助手术报告
- 2026年六安职业技术学院单招职业适应性考试题库含答案详解(考试直接用)
- 2026年《禁毒法》知识测试题及答案(全优)
- 骨科院感防控管理
- 企业人力资源管理体系规划方案书
- 2025年安徽专升本英语历年真题及答案
- 【544】人际心理治疗(IPT)
- 2026年枣庄滕州市事业单位公开招聘初级综合类岗位人员41人考试参考试题及答案解析
- 上海市2026届春季高考“井水与河水”语文作文解析与范文欣赏
评论
0/150
提交评论