- 1、本文档共25页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
;学习目标;触发器是一种与表操作(INSERT、UPDATE、DELETE)有关的数据库对象。触发器定义了一系列操作,这一系列操作称为触发程序。当触发器所在表上出现INSERT、UPDATE以及DETETE操作时,将激活触发器,即表的操作事件触发表上的触发程序的执行。
触发器基于一个表创建,但是可以针对多个表进行操作,所以触发器可以用来对表实施复杂的完整性约束。
;触发器具有以下优点:
(1)触发器自动执行。当对表进行INSERT、UPDATE以及DETETE操作,试图修改表中的数据时,相应操作的触发器立即自动执行。
(2)触发器可以通过数据库中相关表进行层叠更改。这比直接把代码写在前台的做法更安全合理。
(3)触发器可以实现用CHECK约束实现不了的复杂约束。与CHECK约束相比,触发器可以引用其他表中的列。
(4)触发器可以维护冗余数据,实现外键级联选项等。
;CREATETRIGGER语句语法格式如下:
CREATETRIGGER触发器名
AFTER/BEFOREINSERT/UPDATE/DELETE
ON表名
FOREACHROW
BEGIN
SQL语句;#触发程序
END;
;需要说明的是:
(1)触发器是数据库对象,因此创建触发器时,需要指定该触发器属于哪一个数据库。
(2)触发器是在表是创建的。这个表必须是基表,不能是临时表,也不能是视图。
;(3)MySQL的触发事件有三种:INSERT、UPDATE及DELETE。
INSERT:将新记录插入表时激活触发程序。
UPDATE:更改表中的记录时激活触发程序。
DELETE:从表中删除记录叶激活触发程序。
(4)触发器的触发时间有两种:BEFORE和AFTER。
BEFORE表示在触发事件发生之前执行触发程序,AFTER表示在触发事件发生之后执行触发程序。;(5)FOREACHROW表示行级触发器。
目前,MySQL仅支持行级触发器,不支持语句级别的触发器。FOREACHROW表示INSERT、UPDATE及DELETE操作影响的每一条记录都会执行一次触发程序。
(6)触发程序中的SELECT语句不能产生结果集。
;(7)触发程序中可以使用old关键字与new关键字。
①当向表中插入新记录时,在触发程序中可以使用new关键字表示新记录。当需要访问新记录中的某个字段时,可以使用“new.字段名”进行访问。
②当从表中删除某条旧记录???,在触发程序中可以使用old关键字表示旧记录。当需要访问旧记录中的某个字段时,可以使用“old.字段名”进行访问。;③当修改表中的某条记录时,在触发程序中可以使用new关键字表示修改后的记录。使用old关键字表示修改前的记录。当需要访问修改后的记录中的某个字段时,可以使用“new.字段名”进行访问。当需要访问旧记录中的某个字段时,可以使用“old.字段名”进行访问。
④old记录是只读的,在触发程序中只能引用它,但不能更改它。在BEFORE触发程序中,可使用“SETnew.字段名=值”更改new记录的值。但在AFTER触发程序中,不能使用“SETnew.字段名=值”更改new记录的值。
⑤对于INSERT操作,只有new是合法的。对于DELETE操作,只有old是合法的。对于UPDATE操作,new和old都是合法的。;一、使用触发器实现检查约束
使用触发器实现检查约束,在向elective表插入记录时,score字段的值或者为空,或者是在0~100之间。如果score字段的值不满足要求,则将score的值改成在指定范围内。
;对应的SQL语句如下:
DELIMITER//
CREATETRIGGERtr_elective_insertBEFOREINSERTONelectiveFOREACHROW
BEGIN
IF(new.scoreISNOTNULLnew.score0)
THEN
SETnew.score=0;
ELSEIF(new.scoreISNOTNULLnew.score100)
THEN
SETnew.score=100;
ENDIF;
END;//
DELIMITER;;使用触发器实现检查约束,在对elective表修改记录时,修改的记录score字段的值或者为空,或者是在0~100之间。如果score字段的值不满足要求,则记录不能修改。
;二、使用触发器维护冗余数据
使用触发器实现:当一位老师退休或调离时,将该
您可能关注的文档
- 第二章陀螺罗经误差及其消除第一节纬度误差latitudee.ppt
- 第三节海图识图模块海图投影分类及使用地图投影航用海图的投.ppt
- 第三节冲突及其管理冲突的原因与类型课件.pptx
- 第三节 石油的装卸设备石油的装卸设备主要包括输油泵管线及附加设备 一输油泵 油品装卸用输油泵输油泵的作用是产生压能使油品在压差的作用下流动输油泵一般要求排量大扬程较低扬程高时采用多级离心泵扬程低的采用单级离心泵 输油泵类型 主要有离心泵往复泵齿轮泵和螺杆泵等几种 油港输油实际中通常采用的是离心泵.pptx
- 第三单元图形属性与编辑谢喜峰2019年96课件.pptx
- 第三单元图形属性与编辑谢喜峰2019年93课件.pptx
- 第三单元图形属性与编辑谢喜峰2019年62课件.pptx
- 第三单元图形属性与编辑谢喜峰2019年07课件.pptx
- 第七章信号与通信教学目的了解并掌握信号通信设备的基本概念和.ppt
- 第七章视图和触发器课件.pptx
最近下载
- 2022-2023学年深圳市龙岗区七年级语文(下)期末试卷附答案解析.pdf VIP
- 2024人教版英语七年级下册《Unit 1 Animal Friends Why are animals important》大单元整体教学设计[2022课标].docx
- LDOCE6朗文当代6-Longman Communication 9000中文注释.pdf
- 20S515:钢筋混凝土及砖砌排水检查井.pdf VIP
- 汽车零部件智能制造及质量控制平台建设研究.doc VIP
- 公立医院财务风险管理与对策.pptx VIP
- 上消化道出血的临床护理研究进展.docx VIP
- 跨学科项目式学习在初中的实施效果教学研究课题报告.docx
- 螺旋输送机的毕业设计完整版.docx VIP
- 档案整理及数字化服务项目实施方案46页.doc
文档评论(0)