`
stephen830
  • 浏览: 3002056 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

mysql的event schedule 可以让你设置你的mysql数据库再某段时间执行你想要的动作

 
阅读更多

 

mysql的event schedule 可以让你设置你的mysql数据库再某段时间执行你想要的动作

 

## Create event ev_t001_user_remain
delimiter $$
Create event ev_t001_user_remain on schedule
every 1 day starts '2014-07-01 23:00:00'
DO
Begin
	TRUNCATE TABLE nowagamedata.t001_user_remain;
	insert into nowagamedata.t001_user_remain(ur_id,ur_game_id,ur_server_id,ur_platform_id,ur_channel_id,ur_calc_date,ur_user_reg_count,ur_remain_2,ur_remain_3,ur_remain_7,ur_remain_15,ur_create_time) select ur_id,ur_game_id,ur_server_id,ur_platform_id,ur_channel_id,ur_calc_date,ur_user_reg_count,ur_remain_2,ur_remain_3,ur_remain_7,ur_remain_15,date_format(now(),'%Y-%m-%d %H:%i:%s') from meishidata.t001_user_remain;
END $$
delimiter ;

 

 

引用自 http://blog.sina.com.cn/s/blog_95153c710101fzmn.html

 

mysqlevent schedule 可以让你设置你的mysql数据库再某段时间执行你想要的动作

这与视图是不相同的。

create event test1
on schedule every 1 day
starts  '2007-09-01 12:00:00'
on completion not preserve 
do insert into yyy values('hhh','uuu');


create event test
ON SCHEDULE AT '2007-09-01 12:00:00' + INTERVAL 1 DAY
on completion not preserve 
do insert into yyy values('hhh','uuu');

解释:从 2007-09-01开始,每天对表yyy120000进行一个插入操作。而且只执行一次(on completion not preserve

 

使用这个功能之前必须确保event_scheduler已开启,可执行

SET GLOBAL event_scheduler = 1;

SET GLOBAL event_scheduler = ON;
来开启(在mysql重启后会失效),也可以直接在启动命令加上“–event_scheduler=1”,例如:

mysqld ... --event_scheduler=1

 

要使设置永久生效,必须修改/etc/mysql/my.cnf文件:

[mysqld]
添加 event_scheduler=ON

 

要查看当前是否已开启事件调度器,可执行如下SQL

SHOW VARIABLES LIKE 'event_scheduler';

SELECT @@event_scheduler;

SHOW PROCESSLIST;
二、创建事件(CREATE EVENT)
先来看一下它的语法:

CREATE EVENT [IF NOT EXISTS] event_name
  ON SCHEDULE schedule
  [ON COMPLETION [NOT] PRESERVE]
  [ENABLE | DISABLE]
  [COMMENT 'comment']
  DO sql_statement;

schedule:
  AT TIMESTAMP [+ INTERVAL INTERVAL]
| EVERY INTERVAL [STARTS TIMESTAMP] [ENDS TIMESTAMP]

INTERVAL:
  quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
            WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |
            DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}
1)
首先来看一个简单的例子来演示每秒插入一条记录到数据表

USE test;
CREATE TABLE aaa (timeline TIMESTAMP);
CREATE EVENT e_test_insert
ON SCHEDULE EVERY 1 SECOND 
DO INSERT INTO test.aaa VALUES (CURRENT_TIMESTAMP);
等待3秒钟后,再执行查询看看:

mysql> SELECT * FROM aaa;
+---------------------+ 
| timeline            | 
+---------------------+ 
| 2007-07-18 20:44:26 | 
| 2007-07-18 20:44:27 | 
| 2007-07-18 20:44:28 | 
+---------------------+
2) 5
天后清空test表:

CREATE EVENT e_test
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 5 DAY
DO TRUNCATE TABLE test.aaa;
3) 200772012
点整清空test表:

CREATE EVENT e_test
ON SCHEDULE AT TIMESTAMP '2007-07-20 12:00:00'
DO TRUNCATE TABLE test.aaa;
4)
每天定时清空test表:

CREATE EVENT e_test
ON SCHEDULE EVERY 1 DAY
DO TRUNCATE TABLE test.aaa;
5) 5
天后开启每天定时清空test表:

CREATE EVENT e_test
ON SCHEDULE EVERY 1 DAY
STARTS CURRENT_TIMESTAMP + INTERVAL 5 DAY
DO TRUNCATE TABLE test.aaa;
6)
每天定时清空test表,5天后停止执行:

CREATE EVENT e_test
ON SCHEDULE EVERY 1 DAY
ENDS CURRENT_TIMESTAMP + INTERVAL 5 DAY
DO TRUNCATE TABLE test.aaa;
7) 5
天后开启每天定时清空test表,一个月后停止执行:

CREATE EVENT e_test
ON SCHEDULE EVERY 1 DAY
STARTS CURRENT_TIMESTAMP + INTERVAL 5 DAY
ENDS CURRENT_TIMESTAMP + INTERVAL 1 MONTH
DO TRUNCATE TABLE test.aaa;
[ON COMPLETION [NOT] PRESERVE]
可以设置这个事件是执行一次还是持久执行,默认为NOT PRESERVE
8)
每天定时清空test(只执行一次,任务完成后就终止该事件)

CREATE EVENT e_test
ON SCHEDULE EVERY 1 DAY
ON COMPLETION NOT PRESERVE
DO TRUNCATE TABLE test.aaa;
[ENABLE | DISABLE]
可是设置该事件创建后状态是否开启或关闭,默认为ENABLE
[COMMENT ‘comment’]
可以给该事件加上注释。

三、修改事件(ALTER EVENT)
ALTER EVENT event_name
  [ON SCHEDULE schedule]
  [RENAME TO new_event_name]
  [ON COMPLETION [NOT] PRESERVE]
  [COMMENT 'comment']
  [ENABLE | DISABLE]
  [DO sql_statement]
1)
临时关闭事件

ALTER EVENT e_test DISABLE;
2)
开启事件

ALTER EVENT e_test ENABLE;
3)
将每天清空test表改为5天清空一次:

ALTER EVENT e_test
ON SCHEDULE EVERY 5 DAY;
四、删除事件(DROP EVENT)
语法很简单,如下所示:

DROP EVENT [IF EXISTS] event_name
例如删除前面创建的e_test事件

DROP EVENT e_test;
当然前提是这个事件存在,否则会产生ERROR 1513 (HY000): Unknown event错误,因此最好加上IF EXISTS

DROP EVENT IF EXISTS e_test;

 

mysql的sql代码块中进行变量定义、赋值和使用

## Create event ev_t006
delimiter $$
Create event ev_t01_tmp_ins on schedule every 1 MINUTE 
DO 
Begin
	declare v_name varchar(50);
	set v_name=concat('tom',round(rand()*10000));
	insert into t01_tmp(date_time,name) select date_format(now(),'%Y-%m-%d %H:%i:%s'),v_name;
END $$
delimiter ;

 

 

 

分享到:
评论

相关推荐

    [数据库] Navicat for MySQL事件Event实现数据每日定期操作1

    创建Event时,指定`ON SCHEDULE`参数以设置执行频率和时间,`DO`后面跟随要执行的SQL语句。 在实际开发中,为了确保Event在数据库重启或断电后仍能正常工作,需要在my.cnf或my.ini配置文件中添加`event_scheduler =...

    mysql中event事件使用详解.docx

    总结一下,MySQL的Event是一种强大的工具,它可以让你在特定时间执行预设的SQL语句或存储过程,类似于Linux的cron任务。这对于需要定期执行数据库维护、数据备份、数据分析等操作的场景非常有用。正确使用Event,...

    MySQL定时执行脚本(计划任务)命令实例

    举例来说,如果你想要每隔30秒更新`examinfo`表中id为14的记录的`endtime`字段为当前时间,你可以创建一个名为`e_test`的事件和一个名为`test`的存储过程: ```sql CREATE PROCEDURE test () BEGIN UPDATE ...

    Mysql8.0 数据库恢复工具

    文件级别数据库恢复工具软件,本软件适合于操作系统崩溃后将mysql数据目录拷贝出进行恢复,在恢复前需要使用之前备份的数据库结构新建空库,然后将还原文件的数据恢复到新库,目前只能恢复InnoDB引擎、MyISAM引擎 表...

    mysql计划任务教程.zip_mysql下载完是个压缩包

    4. 使用ON SCHEDULE子句设置事件的触发时间表,可以是立即执行、定时执行或者周期性执行。 5. 可选地,使用ON COMPLETION子句指定事件完成后是否自动删除。 6. 使用STARTS和ENDS子句设定事件的开始和结束日期(如果...

    Mysql定时器清空3天以前的数据.zip

    通过事件调度器,我们可以定义一个时间触发的任务,比如在每天的特定时间执行一段SQL代码。 创建一个定时清理3天前数据的事件,你需要遵循以下步骤: 1. **开启事件调度器**:如果事件调度器未启用,你需要在MySQL...

    ​MySQL语句-ALTER EVENT详细介绍.pdf

    为了管理安全性和数据完整性,MySQL允许数据库管理员通过权限系统来精细控制哪些用户可以执行哪些操作。 #### 四、示例 下面通过几个具体的例子来展示如何使用`ALTER EVENT`语句: - **示例1:修改事件的执行周期...

    MySQL数据库:触发器与事件调度器技术教程

    - **schedule_expression**:定义事件执行的时间点或间隔,可以是AT具体时间点或EVERY一段时间。 - **DO**:定义事件执行的具体SQL语句。 **2.4 示例:创建单次事件** 假设我们需要在每天午夜执行一次备份任务。 ...

    mysql定时器

    MySQL 定时器可以根据需要执行的时间间隔、执行的任务、执行的次数等进行配置。 创建表 在 MySQL 中创建表是创建定时器的前提条件。创建表可以使用 CREATE TABLE 语句,例如: ```sql CREATE TABLE mytable ( id ...

    浅谈MySQL event 计划任务

    总的来说,MySQL Event 是一个强大且灵活的工具,用于计划和执行数据库级别的定时任务。了解和掌握其用法,可以帮助开发者更有效地管理数据库,优化工作流程。希望本文提供的信息对您有所帮助,更多关于MySQL Event...

    mysql中event的用法详解

    MySQL中的Event是数据库管理系统提供的一种时间触发机制,它允许用户安排一次或定期执行SQL语句或存储过程。从MySQL 5.1版本开始引入,Event主要用于处理那些需要按时间规律执行的任务,比如定期备份、清理过期数据...

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

    本文实例讲述了mysql事件之修改事件(ALTER EVENT)、禁用事件(DISABLE)、启用事件(ENABLE)、事件重命名及数据库事件迁移操作。分享给大家供大家参考,具体如下: 我们要知道,MySQL允许我们更改现有事件的各种...

    MySQL-Events-CN.rar

    你可以设置事件每天、每周、每月或每年执行,甚至可以设置在某个特定时间点执行一次。 3. **持续时间和循环**:`ON COMPLETION NOT PRESERVE`表示事件执行完毕后自动删除,而`ON COMPLETION PRESERVE`则保留事件,...

    计算机二级考试MySQL数据库强化习题.pdf

    【MySQL数据库基础】 MySQL是一种广泛使用的开源关系型数据库管理系统,对于计算机二级考试来说,了解其基本概念和操作至关重要。MySQL支持多种数据类型、查询语言(SQL)以及数据库管理功能,如视图、索引、存储...

    mysql七天定时下架任务

    此任务通过MySQL数据库中的事件(Event)来定时执行一个自定义的存储过程(Stored Procedure),确保每天定时检查并更新满足条件的记录。 ### 一、任务概述 #### 1.1 背景与目的 在许多网站或应用中,岗位招聘信息...

    定时器所采用到的数据库

    MySQL的Event Scheduler允许在特定时间点或间隔执行SQL语句或存储过程。例如,创建一个每天凌晨1点执行的清理任务: ```sql CREATE EVENT daily_clean_up ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 DAY DO ...

    MySQL-Events-CN[定义].pdf

    MySQL 事件(Events)是 MySQL 5.1 及更高版本中引入的一种新的功能,它允许开发者在数据库中创建和管理定时任务,以执行特定的操作,例如数据备份、统计分析、数据清理等。在本文中,我们将详细介绍 MySQL 事件的...

    详解MySQL用事件调度器Event Scheduler创建定时任务

    MySQL中的事件调度器(Event Scheduler)是一个强大的工具,它允许用户创建定时任务,这些任务可以在预设的时间点执行或者按照固定的间隔重复执行。这个功能自MySQL 5.1.6版本开始引入,为数据库管理和自动化提供了极...

    MySQL定时器EVENT学习笔记

    MySQL定时器EVENT是一种非常实用的功能,它允许数据库管理员在预设的时间执行特定的任务,比如定期备份、清理过期数据或执行维护操作。在MySQL中,EVENTs被设计为数据库级别的对象,可以在不需要用户干预的情况下...

Global site tag (gtag.js) - Google Analytics