广告
返回顶部
首页 > 资讯 > 数据库 >MySQL触发器之初见
  • 592
分享到

MySQL触发器之初见

MySQL触发器之初见 2014-11-27 13:11:03 592人浏览 猪猪侠
摘要

触发器 语法 CREATE TRIGGER trigger_name trigger_time trigger_event NO table_name FOR EACH ROW trigger_stmt trigger_name:

触发器


语法

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上面那么所有的存储过程都需要被重写一遍。

———摘自互联网

您可能感兴趣的文档:

--结束END--

本文标题: MySQL触发器之初见

本文链接: https://www.lsjlt.com/news/2016.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • MySQL触发器之初见
    触发器 语法 CREATE TRIGGER trigger_name trigger_time trigger_event NO table_name FOR EACH ROW trigger_stmt trigger_name: ...
    99+
    2014-11-27
    MySQL触发器之初见
  • mysql之触发器
           触发器是一种 特殊的存储过程,不同的是存储过程要用CALL来调用,而触发器不需要使用CALL也不需要手工启动,只要当一个预...
    99+
    2022-10-18
  • MySQL函数之初见
    MySQL函数 基本语法 函数申明要声明返回类型,用returns指定。 函数体中要有返回语句,return 返回值。 函数执行有别与存储过程执行,不需要Call关键字。 定义一个返回时间和uuid拼接字符串的函数 -- 创建函数 C...
    99+
    2018-03-26
    MySQL函数之初见
  • mysql触发器之触发器的增删改查操作示例
    本文实例讲述了mysql触发器之触发器的增删改查操作。分享给大家供大家参考,具体如下: 我们在创建触发器后,可以在包含触发器定义文件的数据文件夹中显示其定义。触发器作为纯文本文件存储在以下数据库文件夹中: ...
    99+
    2022-10-18
  • MySQL函数和游标之初见
    MySQL函数 基本语法 函数申明要声明返回类型,用returns指定。 函数体中要有返回语句,return 返回值。 函数执行有别与存储过程执行,不需要Call关键字。 定义一个返回时间和uuid拼接字符串的函数 -- 创建函数 CR...
    99+
    2019-11-26
    MySQL函数和游标之初见
  • 8Python全栈之路系列之MySQL触发器
    Python全栈之路系列之MySQL触发器l对某个表进行增/删/改操作的前后如果希望触发某个特定的行为时,可以使用触发器,触发器用于定制用户对表的行进行增/删/改前后的行为。创建触发器基本语法插入前CREA...
    99+
    2022-10-18
  • 详解MySQL数据库之触发器
    1 引言 本文是对MySQL中触发器的总结,从触发器概念出发,结合实例对创建触发器、使用触发器、删除触发器进行介绍。 2 触发器简介 MySQL触发器和存储过程一样,都是嵌入到MySQL的一段程序。触发器是由事件...
    99+
    2022-05-20
    MySQL 触发器
  • MySQL | MySQL触发器
    目录 一、创建触发器 1.2 创建只有一个执行语句的触发器 1.2 创建有多个执行语句的触发器 二、查看触发器 2.1 利用SHOW TRIGGERS语句查看触发器信息 2.2 在triggers表中查看触发器信息 三、删除触发器 一、创...
    99+
    2023-09-02
    数据库 sql mysql 数据库开发 数据库架构
  • MySQL——触发器
    基本语法 //创建触发器 CREATE TRIGGER name //删除触发器 DROP TRIGGER name 创建触发器 在创建触发器时需要给出4条信息 唯一的触发器名 触发器需要关联的表 触发器应该响应...
    99+
    2020-02-06
    MySQL——触发器
  • MySQL-触发器
    一、触发器 触发器(TRIGGER)是MySQL的数据库对象之一,从5.0.2版本开始支持。该对象与编程语言中的函数非常类似,都需要声明、执行等。但是触发器的执行不是由程序调用,也不是由手工启动,而是由事件...
    99+
    2022-10-18
  • MySQL触发器
    1、 触发器定义: 触发器(trigger)是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进...
    99+
    2019-06-10
    MySQL触发器
  • MySQL 触发器
    文章目录 1.简介2.行级与语句级触发器3.触发时机4.触发器优缺点5.创建触发器语法示例 6.查看触发器7.删除触发器参考文献 1.简介 触发器(Trigger)是与表关联的命名数据库对象,当表发生特定事件时激活。 触发器...
    99+
    2023-08-30
    mysql 触发器
  • mysql触发器之创建多个触发器操作的示例分析
    这篇文章将为大家详细讲解有关mysql触发器之创建多个触发器操作的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。这次记录的内容mysql 版本必须得是5.7.2+...
    99+
    2022-10-18
  • MySQL 之视图、 触发器、事务、存储
    本文内容: 视图 触发器 事务 存储过程 内置函数 流程控制 索引 ---------------------------------------------------------------------...
    99+
    2023-01-31
    触发器 视图 事务
  • mysql触发器(trigger)
    触发器的作用 监听数据的变化,以实现当数据变化时的关联操作,不过感觉没有实际作用,触发器的功能如果用代码逻辑来控制感觉会更正规些,毕竟团队中的其它人不一定会看到你定义的触发器,但一定能看到你的代码。那为何还...
    99+
    2022-10-18
  • 【MySQL】MySQL触发器入门宝典,助力MySQL初学者打下基本功
    🧑‍💻作者名称:DaenCode 🎤作者简介:啥技术都喜欢捣鼓捣鼓,喜欢分享技术、经验、生活。 😎人生感悟:尝尽人生百味,方知世间冷暖。 📖所属专栏:重温M...
    99+
    2023-08-17
    mysql 数据库
  • MySQL进阶——触发器
    1.触发器定义 同存储过程和函数类似,MySQL中的触发器也是存储在系统内部的一段程序代码,可以把它看作是一个特殊的存储过程。所不同的是,触发器无需人工调用,当程序满足定义条件时就会被MySQL自动调用。这些条件可以称为触发事件,包括INS...
    99+
    2023-10-28
    数据库
  • Mysql中的触发器
      阅读目录 什么是触发器 特点及作用 例子:创建触发器,记录表的增、删、改操作记录 弊端 什么是触发器 简单的说,就是一张表发生了某件事(插入、删除、更新操作),然后自动触发了预先编写好的若干条SQL语句的执行; 特点及...
    99+
    2018-09-20
    Mysql中的触发器
  • 十一、MySQL触发器
      MySQL的触发器和存储过程一样,都是嵌入到MySQL的一段程序。触发器是由时间来触发某个操作,这些时间包括INSERT、UODATE和DELETE语句。如果定义了触发程序,当数据库执...
    99+
    2022-10-18
  • MySQL(89)MySQL查看触发器
    MySQL查看触发器 查看触发器是指查看数据库中已经存在的触发器的定义、状态和语法信息等。MySQL 中查看触发器的方法包括 SHOW TRIGGERS 语句和查询 information_schema 数据库下的 triggers 数据表...
    99+
    2023-10-25
    mysql 数据库 sql
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作