MySQL事件与触发器专题精炼

目录
  • 了解触发器和事件(定时器)
    • 什么是触发器?
    • 什么是事件(定时器)?
    • 触发器和事件(定时器)的区别
  • 创建触发器和事件(定时器)
    • 创建触发器
    • 创建事件(定时器)
  • 对触发器和时间(定时器)的操作
    • 查看当前数据库下的触发器和定时器
    • 删除定时器和触发器

这里是MYSQL成圣之路 

了解触发器和事件(定时器)

什么是触发器?

概念: 触发器(trigger)是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( insert,delete, update)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等。 触发器可以从 DBA_TRIGGERS ,USER_TRIGGERS 数据字典中查到。SQL3的触发器是一个能由系统自动执行对数据库修改的语句。

通俗的来讲,触发器就是一个触发装置,装置里面存有一段操作。这个装置有触发条件,达到某个条件就会触发这个装置,触发装置就会执行存储的一段操作。

什么是事件(定时器)?

概念: 事件(event)是MySQL在相应的时刻调用的过程式数据库对象。一个事件可调用一次,也可周期性的启动,它由一个特定的线程来管理的,也就是所谓的“事件调度器”。

通俗的来讲,事件就可以看作一个定时器,设定一个时间。等时间到了开始执行设置好的操作。

触发器和事件(定时器)的区别

  • 事件和触发器类似,都是在某些事情发生的时候启动。当数据库上启动一条语句的时候,触发器就启动了,而事件是根据调度事件来启动的。由于他们彼此相似,所以事件也称为临时性触发器。
  • 事件取代了原先只能由操作系统的计划任务来执行的工作,而且MySQL的事件调度器可以精确到每秒钟执行一个任务,而操作系统的计划任务(如:Linux下的CRON或Windows下的任务计划)只能精确到每分钟执行一次。

创建触发器和事件(定时器)

创建触发器

例一:建立一个用户表(用户ID,用户姓名),建立一个触发器(当用户表中插入数据时,自动生成一个全局唯一的ID)

先建立user表

create table user(
id int PRIMARY KEY,
name varchar(20)
);

建立触发器

-- 建立触发器名为tt
create TRIGGER tt
-- 触发条件,向user表中插入数据时启动触发器
BEFORE insert on user
-- 检查表中每一行,对新插入的数据进行操作
for EACH ROW
-- 执行操作
BEGIN
set new.id=UUID();
END

刚刚建立的触发器(查看当前数据库下全部触发器的代码show triggers)

效果:向表中插入三个用户名,自动生成三个ID

insert user(name) VALUE('张三'),('李四'),('王五')

例二:再建立一个订单表DD(订单ID,商品名称,用户ID),建立一个触发器tq1(当删除一个用户时,该用户的订单也将删除)

建表

create table DD(
ddid int PRIMARY KEY,
ddname VARCHAR(20),
userid VARCHAR(50)
)

建立触发器

delimiter $
-- 建立触发器名为tq
create TRIGGER tq1
-- 触发条件,再dd表删除数据之后启动触发器
AFTER DELETE on user
-- 检查表中每一行,对新插入的数据进行操作
for EACH ROW
-- 执行操作
BEGIN
DELETE FROM dd WHERE old.id=userid;
END $
delimiter ;

向表中添加两条数据

效果:删除user表中的用户,dd表中的记录也跟随删除 删除张三

delete from user WHERE name='张三'

创建事件(定时器)

在User表中设置一个事件在一分钟后执行。一分钟后向user表中添加三条数据

-- 创建事件e1
create event e1
-- 预定时间
on SCHEDULE
-- 当前时间加一分钟
AT CURRENT_TIMESTAMP + INTERVAL 1 MINUTE
-- 执行操作
do insert user(name) VALUE('王大麻子'),('王二麻子'),('王三麻子');

效果 执行前

没到一分钟查看一下,没有变化

一分钟后,数据自动添加上了

对触发器和时间(定时器)的操作

查看当前数据库下的触发器和定时器

这里只能查看还未执行的定时器,执行完的已经没了

// 查询当前库下的定时器
show events

查看当前库下的触发器

show TRIGGERS

删除定时器和触发器

删除触发器tt2

DROP TRIGGER tt2

新建定时器

删除定时器

drop event e1

-- 开启关闭事件调度器
-- ON 1 开启事件功能
-- OFF off 0 关闭事件功能
set global event_scheduler = OFF
set global event_scheduler = on;

到此这篇关于MySQL事件与触发器专题精炼的文章就介绍到这了,更多相关MySQL 触发器内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Mysql存储过程、触发器、事件调度器使用入门指南

    目录 一.存储过程的简单使用 二.存储过程中的变量 三.变量的作用域 四.存储过程参数 五.逻辑控制语句 1.条件语句 2.循环语句 3.case分支 六.游标 七.自定义函数 八.触发器 九.事件 存储过程(Stored Procedure)是一种在数据库中存储复杂程序的数据库对象.为了完成特定功能的SQL语句集,经过编译创建并保存在数据库中. 一.存储过程的简单使用 创建存储过程 create procedure test() begin select * from users; end;

  • 带你了解MySQL中的事件调度器EVENT

    MySQL中的事件调度器,EVENT,也叫定时任务,类似于Unix crontab或Windows任务调度程序. EVENT由其名称和所在的schema唯一标识. EVENT根据计划执行特定操作.操作由SQL语句组成,语句可以是BEGIN-END语句块.EVENT可以是一次性的,也可以是重复性的.一次性EVENT只执行一次,周期性EVENT以固定的间隔重复其操作,并且可以为周期性EVENT指定开始日期和时间.结束日期和时间.(默认情况下,定期EVENT在创建后立即开始,并无限期地继续,直到它被禁

  • mysql触发器实时检测一条语句进行备份删除思路详解

    问题描述:用户有一个这样一个需求,在一张表里会不时出现 "违规" 字样的字段,需要在出现这个字段的时候,把整行的数据删掉.这是个采集任务,如果发现有"违规"字样的数据,会整点或者什么时间进行统一上报,也无法对源头进行控制让这种数据不生成. 现在需要实现以下需求: 1.实时检测这条数据的产生,发现后删除 2.在删除之前作备份这条数据 解决思路: 需要明确解决思路, 1.首先是如何实时探测删除?询问开发,这条数据的生成方式为insert,就可以做一个当表做插入的时候,然

  • MySQL定时任务(EVENT事件)如何配置详解

    一.事件(EVENT)是干什么的   自MySQL5.1.6起,增加了一个非常有特色的功能 - 事件调度器(Event Scheduler),可以用做定时执行某些特定任务(例如:删除记录.数据统计报告.数据备份等等),来取代原先只能由操作系统的计划任务来执行的工作.   值得一提的是MySQL的事件调度器可以精确到每秒钟执行一个任务,而操作系统的计划任务(如:Linux的cron)只能精确到每分钟执行一次.对于一些对数据实时性要求比较高的应用(例如:股票.赔率.比分等)就非常适合.   事件有时

  • MySQL数据库触发器从小白到精通

    这里是MYSQL成圣之路  先了解一下触发器,再来讨论是否能完全代替外键 什么是触发器? 概念:触发器(trigger)是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( insert,delete, update)时就会激活它执行.触发器经常用于加强数据的完整性约束和业务规则等. 触发器可以从 DBA_TRIGGERS ,USER_TRIGGERS 数据

  • 详解mysql触发器trigger实例

    目录 什么是触发器 创建触发器 现在有表如下: 这里再啰嗦几句: 限制和注意事项 总结 数据库触发器有以下的作用: MySQL好像从5.0.2版本就开始支持触发器的功能了,本次博客就来介绍一下触发器,首先还是谈下概念性的东西吧: 什么是触发器 触发器是与表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合.触发器的这种特性可以协助应用在数据库端确保数据的完整性. 举个例子,比如你现在有两个表[用户表]和[日志表],当一个用户被创建的时候,就需要在日志表中插入创建的log日志,如

  • mysql的计划任务与事件调度实例分析

    本文实例讲述了mysql的计划任务与事件调度.分享给大家供大家参考,具体如下: mysql事件是基于预定义的时间表运行的任务,因此有时它被称为预定事件.mysql事件也被称为"时间触发",因为它是由时间触发的,而不是像触发器一样更新表来触发的.mysql事件类似于UNIX中的cron作业或Windows中的任务调度程序.我们可以在优化数据库表,清理日志,归档数据或在非高峰时间生成复杂的报告的时候使用mysql事件. mysql使用一个名为事件调度线程的特殊线程来执行所有调度的事件.我们

  • MySQL 使用事件(Events)完成计划任务

    事件可以指定单次或以一定的间隔执行 SQL 代码.通常是将复杂的 SQL 语句使用存储过程封装好,然后周期性地调用存储过程完成一定的任务. 事件无需建立服务端连接,而是通过一个独立的事件调度器线程完成初始化.事件没有输入参数也没有返回值,这是因为没有连接也就不存在输入和输出了.启用后,可以通过服务端日志查看执行的指令,但是很难知道具体来自哪个事件.也可以查询 INFORMATION_SCHEMA.EVENTS 表了解事件的状态,例如最近一次执行的时间. 与存储过程类似,事件也需要考虑类似的问题.

  • MySQL触发器的使用和优缺点介绍

    目录 前言 1. 触发器概述 2. 触发器的创建 2.1 创建触发器语法 2.2 代码举例 3. 查看.删除触发器 3.1 查看触发器 3.2 删除触发器 4. 触发器的优缺点 4.1 优点 4.2 缺点 4.3 注意点 前言 在实际开发中,我们经常会遇到这样的情况:有 2 个或者多个相互关联的表,如 商品信息和库存信息分别存放在2个不同的数据表中,我们在添加一条新商品记录的时候,为了保证数据的完整性,必须同时在库存表中添加一条库存记录. 这样一来,我们就必须把这两个关联的操作步骤写到程序里面,

  • MySQL事件与触发器专题精炼

    目录 了解触发器和事件(定时器) 什么是触发器? 什么是事件(定时器)? 触发器和事件(定时器)的区别 创建触发器和事件(定时器) 创建触发器 创建事件(定时器) 对触发器和时间(定时器)的操作 查看当前数据库下的触发器和定时器 删除定时器和触发器 这里是MYSQL成圣之路  了解触发器和事件(定时器) 什么是触发器? 概念: 触发器(trigger)是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启

  • mysql触发器之触发器的增删改查操作示例

    本文实例讲述了mysql触发器之触发器的增删改查操作.分享给大家供大家参考,具体如下: 我们在创建触发器后,可以在包含触发器定义文件的数据文件夹中显示其定义.触发器作为纯文本文件存储在以下数据库文件夹中: /data_folder/database_name/table_name.trg 我们还可通过查询information_schema数据库中的triggers表来显示触发器,如下所示: SELECT * FROM information_schema.triggers WHERE trig

  • Oracle使用触发器和mysql中使用触发器的案例比较

    一.触发器 1.触发器在数据库里以独立的对象存储, 2.触发器不需要调用,它由一个事件来触发运行 3.触发器不能接收参数 --触发器的应用 举个例子:校内网.开心网.facebook,当你发一个日志,自动通知好友,其实就是在增加日志的时候做一个出发,再向表中写入条目. --触发器的效率很高 举例:论坛的发帖,每插入一个帖子都希望将版面表中的最后发帖时间,帖子总数字段进行同步更新,这时使用触发器效率会很高. 二.Oracle 使用 PL/SQL 编写触发器 1.--PL/SQL创建触发器的一般语法

  • mysql事件之修改事件(ALTER EVENT)、禁用事件(DISABLE)、启用事件(ENABLE)、事件重命名及数据库事件迁移操作详解

    本文实例讲述了mysql事件之修改事件(ALTER EVENT).禁用事件(DISABLE).启用事件(ENABLE).事件重命名及数据库事件迁移操作.分享给大家供大家参考,具体如下: 我们要知道,MySQL允许我们更改现有事件的各种属性.如果我们要更改现有事件,可以使用ALTER EVENT语句,如下所示: ALTER EVENT event_name ON SCHEDULE schedule ON COMPLETION [NOT] PRESERVE RENAME TO new_event_n

  • 浅谈MySql 视图、触发器以及存储过程

    视图 什么是视图?视图的作用是什么? 视图(view)是一种虚拟存在的表,是一个逻辑表,它本身是不包含数据的.作为一个select语句保存在数据字典中的. 通过视图,可以展现基表(用来创建视图的表叫做基表base table)的部分数据,说白了视图的数据就是来自于基表. 视图的优点: 简单:使用视图的用户完全不需要关心后面对应的表的结构.关联条件和筛选条件,对用户来说已经是过滤好的复合条件的结果集. 安全:使用视图的用户只能访问他们被允许查询的结果集,对表的权限管理并不能限制到某个行某个列,但是

  • 详解MySQL数据库之触发器

    1 引言 本文是对MySQL中触发器的总结,从触发器概念出发,结合实例对创建触发器.使用触发器.删除触发器进行介绍. 2 触发器简介 MySQL触发器和存储过程一样,都是嵌入到MySQL的一段程序.触发器是由事件来触发某个操作,这些事件包括INSERT.UPDATE.DELETE.如果定义了触发器,当数据库执行这些语句的时候就会激活触发器执行相应的操作,触发程序是与表有关的命令数据库对象,当表上出现特定事件,将激活该对象. 触发器是一个特殊的存储过程,不同的是,执行存储过程要使用call语句来调

  • MySQL深入浅出掌握触发器用法

    目录 MySQL触发器 触发器的特性 创建触发器 demo 触发器操作-NEW和OLD demo 触发器-查看 触发器-删除 触发器的注意事项 MySQL触发器 触发器是一种特殊的存储过程,触发器和存储过程一样是一个能完成特定功能.存储在数据库服务器上的SQL片段,但是触发器无需调用,当对数据库表中的数据执行DML操作时自动触发这个SQL片段的执行,无需手动调用. 在MySQL中,只要执行insert,update,delete操作是才能触发触发器的执行 触发器的这种特性可以协助应用在数据库端确

  • Mysql中的触发器定义及语法介绍

    目录 1.定义: 2.语法: 3.删除触发器 4.查询触发器 5.触发器类型OLD和NEW的使用 1.定义: 触发器和存储过程相似,都是嵌入到 MySQL 中的一段程序.触发器是由事件来触发某个操作.当数据库执行这些事件时,就会激活触发器来执行相应的操作.这些事件称为触发条件,在MySQL中,有UPDATE,INSERT,和DELETE. 在MySQL中,目前只有UPDATE,INSERT,和DELETE这三种操作,才会触发触发器,其他操作都不支持触发器.这和Oracle中的触发器有很大的区别,

  • MySQL数据库的触发器和事务

    目录 一.触发器 概念 二. 触发器的操作 触发器的增删改操作 触发器的查看删除操作 三.事务 概念 四.事务的操作 基本流程 基础操作 事务的提交方式 事务的隔离级别 隔离操作 一.触发器 概念 触发器是SQL server提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,是由事件来触发.触发器经常用来加强数据的完整性约束和业务规则. 二. 触发器的操作 创建account和account_log数据表: CREATE TABLE account( id I

随机推荐