MySql简单入门_第四篇 高级使用(4)_触发器
4、触发器TRIGGER : 在某个表发生某一事件时,自动来触发某个操作。
触发器是MySql响应INSERT语句,UPDATE语句和 DELETE 语句而自动执行的一条MySql语句(或位于BEGIN 和 END 语句之间的一组语句)。其他MySql语句不支持触发器。只有表才支持触发器,视图不支持(临时表也不支持)。
4.1 创建触发器
需要给出4条信息:
- 唯一的触发器名;【保持每个数据库的出触发器名唯一】
- 触发器关联的表;
- 触发器应该响应的活动(DELETE,INSERT或 UPDATE);
- 触发器何时执行(处理之前或之后)
CREATE TRIGGER 触发器名 <BEFORE | AFTER >
<INSERT | UPDATE | DELETE>触发事件
ON <表名> FOR EACH ROW <触发器主体>
before | after 触发事件:触发器可在一个操作发生之前或之后执行。
for each row:一般是指行级触发,对于受触发事件影响的每一行都要激活触发器的动作。例如,使用 INSERT 语句向某个表中插入多行数据时,触发器会对每一行数据的插入都执行相应的触发器动作。
注意:每个表都支持 INSERT、UPDATE 和 DELETE 的 BEFORE 与 AFTER,因此每个表最多支持 6 个触发器。每个表的每个事件每次只允许有一个触发器。单一触发器不能与多个事件或多个表关联。
4.1.1 创建INSERT触发器
INSERT触发器在INSERT语句执行之前或之后执行。需要知道以下几点:
- 在INSERT触发器代码内,可引用一个名为NEW的虚拟表,访问被插入的行;
- 在BEFORE INSERT触发器中,NEW中的值也可以被更新(允许更改被插入的值);
- 对于AUTO_INCREMENT列,NEW在INSERT执行之前包含0,在INSERT执行之后包含新的自动生成值
4.1.2 创建DELETE 触发器
DELETE触发器在DELETE语句执行之前或之后执行。需要知道以下两点:
- 在DELETE触发器代码内,你可以引用一个名为OLD的虚拟表,访问被删除的行;
- OLD中的值全都是只读的,不能更新。
4.1.3 UPDATE触发器
UPDATE触发器在UPDATE语句执行之前或之后执行。需要知道以下几点:
- 在UPDATE触发器代码中,你可以引用一个名为OLD的虚拟表访问以前(UPDATE语句前)的值,引用一个名为NEW的虚拟表访问新更新的值;
- 在BEFORE UPDATE触发器中,NEW中的值可能也被更新(允许更改将要用于UPDATE语句中的值);
- OLD中的值全都是只读的,不能更新。
4.1.4 触发器的old和new区别
after触发器—是在记录操纵之后触发,是先完成数据的增删改,再触发,触发的语句晚于监视的增删改操作,无法影响前面的增删改动作
before触发器—是在记录操纵之前触发,是先完成触发,再增删改,触发的语句先于监视的增删改,我们就有机会判断,修改即将发生的操作,如:我们在触发之前需要判断new值和old值的大小或关系,如果满足要求就触发,不通过就修改再触发;如:表之间定义的有外键,在删除主键时,必须要先删除外键表,这时就有先后之分,这里before相当于设置了断点,我们可以处理删除外键。
对于INSERT语句, 只有NEW是合法的;
对于DELETE语句,只有OLD才合法;
对于UPDATE语句,NEW、OLD可以同时使用。
4.2 删除触发器
DROP TRIGGER 触发器名;
4.3 查看触发器
SHOW TRIGGERS\G;
MySql简单入门_第四篇 高级使用(4)_触发器相关推荐
- 编程实现将rdd转换为dataframe:源文件内容如下(_第四篇|Spark Streaming编程指南(1)
Spark Streaming是构建在Spark Core基础之上的流处理框架,是Spark非常重要的组成部分.Spark Streaming于2013年2月在Spark0.7.0版本中引入,发展至今 ...
- 《Autosar从入门到精通-实战篇》总目录_培训教程持续更新中...
目录 一.Autosar入门篇: 1.1 DBC专题(共9篇) 1.2 ARXML专题(共35篇) 1.2.1 CAN Matrix Arxml(共28篇) 1.2.2 ASWC Arxml(共7篇) ...
- MySQL简单入门教程
http://www.ahnu.edu.cn/homepage/info_read.php?id=66183&cata_0=%B0%B2%BB%D5%CA%A6%B7%B6%B4%F3%D1% ...
- MySQL数据库的函数与分组_第四篇(一万字非常详细)
前言 一.创建计算字段 1. 计算字段 存储在数据库表中的数据一般不是应用程序所需要的格式. 例如,如果想在一个字段中既显示公司名,又显示公司的地址,但这两个信息一般包含在不同的表列中.我们需要直接从 ...
- 阿波罗数据集怎么下载_携程Apollo简单入门教程这一篇就够了
1. Apollo背景 对程序配置的期望值也越来越高:配置修改后实时生效,灰度发布,分环境.分集群管理配置,完善的权限.审核机制-- 废话不多说,参考官方文档 如果不想看文档, 也没关系, 跟着我一步 ...
- 【MySQL从入门到精通】【高级篇】(九)InnoDB的B+树索引的注意事项
您好,我是码农飞哥,感谢您阅读本文,欢迎一键三连哦.
- 【MySQL从入门到精通】【高级篇】(一)字符集的修改与底层原理
您好,我是码农飞哥,感谢您阅读本文,欢迎一键三连哦.
- 【MySQL从入门到精通】【高级篇】(二十六)建了索引就能用么?我看未必。来看看几种索引失效的情况吧
您好,我是码农飞哥(wei158556),感谢您阅读本文,欢迎一键三连哦.
- 【MySQL从入门到精通】【高级篇】(二十)适合创建索引的11种情况不适合创建索引的7种情况,万字长文
您好,我是码农飞哥,感谢您阅读本文,欢迎一键三连哦.
最新文章
- iOS用户设计指南 - 平台特征
- 判断是否是闰年的方法,很简单噢
- linux ora 01092,ORA-01173的模拟与故障处理
- 星来客机器人餐厅_在50米高空聚餐,在铁窗内吃饭,盘点全球特色餐厅,看看有多奇葩...
- emacs .emacs_使用Emacs进行社交并跟踪您的待办事项列表
- timestamp类型的数据如何赋值_VBA一组代码如何搞定赋值给数组arr及回填数据给工作表...
- 关于setInterval和setTImeout中的this指向问题
- Freemarker 最简单的例子程序
- uploadify 上传文件出现HTTP 404错误
- stm32如何执行软复位_stm32f7软件复位 stm32f0 软件复位
- 简单测试.NET开源的PDF文档生成器QuestPDF
- 如何用云计算提高员工工作效率
- 高电平输入好还是rca输入好_dsp高电平和低电平输入哪个好
- word论文页眉的横线怎么删除去掉
- 小米手机NFC复制门禁卡读取芯片信息失败,报错103解决办法。
- 日常开发记录-'npm' 不是内部或外部命令,也不是可运行的程序 或批处理文件。...
- 【leetcode 5417. 定长子串中元音的最大数目】 Python 解题思路
- response导出html到word
- 计算机网络基础知识——(一)
- ue4怎么用虚幻商城场景_如何利用虚幻商城创造被动收入【经验分享】