我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL触发器之初见

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL触发器之初见

触发器


语法

CREATE TRIGGER trigger_name
trigger_time
trigger_event NO table_name
FOR  EACH ROW
trigger_stmt
  • trigger_name: 标识触发器名称,用户自行指定;
  • trigger_time: 标识触发时机,取值为 BEFOREAFTER
  • trigger_event: 标识触发事件,取值为 INSERTUPDATE 或者 DELETE
  • table_name: 标识触发器的表名,即在哪张表上建立触发器;
  • trigger_stmt: 触发器程序体

当表tb1中记录添加后子哦对那个添加到表tb2中

CREATE TRIGGER trigger1
AFTER
INSERT ON tb1
FOR EACH ROW
INSERT INTO tb2 (name) VALUES (new.name)
  • NEW: 表示新值
  • OLD: 表示旧值
  • INSERT只有NEW
  • UPDATE有NEW和OLD
  • DELETE只有OLD

向country表中添加数据后,将数据同步到country_dictionary表中

CREATE TRIGGER updateDct
AFTER 
INSERT ON country 
FOR EACH ROW
INSERT INTO country_dictionary(id,name,insetTime) VALUES (new.id,new.countryname,SYSDATE());

查询该库中的触发器

  • 方法一
SHOW TRIGGERS;
  • 方法二
SELECT * FROM information_schema.`TRIGGERS` WHERE TRIGGER_NAME = "updateDct";

删除触发器 DROP TRIGGER trigger_name;

DROP TRIGGER updateDct;

某些时候需要改变语句结束符号符号

在命令行中执行时,“;”加回车表示执行,需要将分隔符改为别的符号,执行完再改回来,可用 delimiter 关键字实现

在表更新后将跟新前和跟新后数据加到日志表中,见下

-- 将分隔符换位//
DELIMITER //

CREATE TRIGGER on_update_country_log
AFTER 
UPDATE ON country
FOR EACH ROW
BEGIN
	INSERT INTO country_update_log VALUES (UUID(),SYSDATE(),CONCAT("new[country_code=",new.countryCode,";countryname=",new.countryname,"]"));
	INSERT INTO country_update_log VALUES (UUID(),SYSDATE(),CONCAT("old[country_code=",old.countryCode,";countryname=",old.countryname,"]"));
END//

DELIMITER ;

【延申】为什么不推荐使用触发器和存储过程?

  • 1.存储过程和触发器二者是有很大的联系的,我的一般理解就是触发器是一个隐藏的存储过程,因为它不需要参数,不需要显示调用,往往在你不知情的情况下已经做了很多操作。从这个角度来说,由于是隐藏的,无形中增加了系统的复杂性,非DBA人员理解起来数据库就会有困难,因为它不执行根本感觉不到它的存在。
  • 2.再有,涉及到复杂的逻辑的时候,触发器的嵌套是避免不了的,如果再涉及几个存储过程,再加上事务等等,很容易出现死锁现象,再调试的时候也会经常性的从一个触发器转到另外一个,级联关系的不断追溯,很容易使人头大。其实,从性能上,触发器并没有提升多少性能,只是从代码上来说,可能在coding的时候很容易实现业务,所以我的观点是:摒弃触发器!触发器的功能基本都可以用存储过程来实现。
  • 3.在编码中存储过程显示调用很容易阅读代码,触发器隐式调用容易被忽略。 存储过程也有他的致命伤↓
  • 4.存储过程的致命伤在于移植性,存储过程不能跨库移植,比如事先是在mysql数据库的存储过程,考虑性能要移植到oracle上面那么所有的存储过程都需要被重写一遍。

———摘自互联网

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL触发器之初见

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL触发器之初见

触发器语法CREATE TRIGGER trigger_nametrigger_timetrigger_event NO table_nameFOR EACH ROWtrigger_stmttrigger_name: 标识触发器名称,用户自行指定;trigg
2014-11-27

MySQL函数之初见

MySQL函数基本语法函数申明要声明返回类型,用returns指定。函数体中要有返回语句,return 返回值。函数执行有别与存储过程执行,不需要Call关键字。定义一个返回时间和uuid拼接字符串的函数-- 创建函数CREATE FUNCTION my_fu
2018-03-26

详解MySQL数据库之触发器

1 引言本文是对MySQL中触发器的总结,从触发器概念出发,结合实例对创建触发器、使用触发器、删除触发器进行介绍。 2 触发器简介MySQL触发器和存储过程一样,都是嵌入到MySQL的一段程序。触发器是由事件来触发某个操作,这些事件包括IN
2022-05-20

MySQL 触发器

文章目录 1.简介2.行级与语句级触发器3.触发时机4.触发器优缺点5.创建触发器语法示例 6.查看触发器7.删除触发器参考文献 1.简介 触发器(Trigger)是与表关联的命名数据库对象,当表发生特定事件时激活。 触发器
2023-08-30

MySQL触发器

1、 触发器定义:触发器(trigger)是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( insert,delet
MySQL触发器
2019-06-10

MySQL——触发器

基本语法 //创建触发器CREATE TRIGGER name//删除触发器DROP TRIGGER name 创建触发器 在创建触发器时需要给出4条信息 唯一的触发器名 触发器需要关联的表 触发器应该响应的活动(DELETE、INSTERT或UPDA
MySQL——触发器
2020-02-06
2024-04-02

MySQL函数和游标之初见

MySQL函数基本语法函数申明要声明返回类型,用returns指定。函数体中要有返回语句,return 返回值。函数执行有别与存储过程执行,不需要Call关键字。定义一个返回时间和uuid拼接字符串的函数-- 创建函数CREATE FUNCTION my_fu
MySQL函数和游标之初见
2019-11-26

MySQL 之视图、 触发器、事务、存储

本文内容:视图触发器事务存储过程内置函数流程控制索引----------------------------------------------------------------------------------------------
2023-01-31

mysql触发器的三种触发事件

mysql触发器在特定事件发生时执行动作,有三种触发事件:1. before:在操作发生前触发,允许检查数据或更新其他表;2. after:在操作发生后触发,允许发送通知或分析数据;3. instead of:替代操作,允许完全控制对表的修
mysql触发器的三种触发事件
2024-08-01

【MySQL】MySQL触发器入门宝典,助力MySQL初学者打下基本功

🧑‍💻作者名称:DaenCode 🎤作者简介:啥技术都喜欢捣鼓捣鼓,喜欢分享技术、经验、生活。 😎人生感悟:尝尽人生百味,方知世间冷暖。 📖所属专栏:重温M
2023-08-17

Mysql中的触发器

阅读目录什么是触发器特点及作用例子:创建触发器,记录表的增、删、改操作记录弊端什么是触发器简单的说,就是一张表发生了某件事(插入、删除、更新操作),然后自动触发了预先编写好的若干条SQL语句的执行;特点及作用特点:触发事件的操作和触发器里的SQL语句是一个事务
Mysql中的触发器
2018-09-20

编程热搜

目录