`

MySql event时间触发器实现满足条件自动更新符合的状态

 
阅读更多

需求如下:

由于给商品做促销活动,添加促销活动时设置促销开始时间,到时间后自动把该数据状态由未开始更新为进行中,这时想到了MySql event时间触发器。

1、基本概念

mysql5.1版本开始引进event概念。event既“时间触发器”,与TRIGGERS的事件触发不同,event类似与linux crontab计划任务,用于时间触发。通过单独或调用存储过程使用,在某一特定的时间点,触发相关的SQL语句或存储过程。


2、适用范围

对于每隔一段时间就有固定需求的操作,如创建表,删除数据等操作,可以使用event来处理。


3、基本语法

开启定时器:要使event起作用,MySQL的常量GLOBAL event_scheduler必须为ON或者是1。

(1)查看是否开启定时器

SHOW VARIABLES LIKE 'event_scheduler';

(2)开启定时器 0:off 1:on

SET GLOBAL event_scheduler = 1; 

4、实例

(1)开启event_scheduler SQL指令

SET GLOBAL event_scheduler = ON;  
SET @@global.event_scheduler = ON;  
SET GLOBAL event_scheduler = 1;  
SET @@global.event_scheduler = 1;  

(2)定义存储过程

DELIMITER |  
DROP PROCEDURE IF EXISTS update_remind_status |  
CREATE PROCEDURE update_remind_status()  
BEGIN  
    IF exists (select id from remind where status='1' and SYSDATE()>=remind_time) THEN  
            update remind_receive set `status`='1'  
            where remind_id in (SELECT id from remind where `status`='1' and SYSDATE()>=remind_time) and `status`='3';  
    END IF;  
END   
 |  
DELIMITER;  

(3)创建定时器,每间隔一秒调用一次存储过程。

DELIMITER //  
CREATE EVENT  event_remind_status  
ON SCHEDULE EVERY 1 second  do  
begin  
call update_remind_status();  
end //  
DELIMITER;  

(4)启动定时器

ALTER EVENT event_remind_status ON    
COMPLETION PRESERVE ENABLE; 

经过测试可成功。

参考文章 http://blog.csdn.net/bingducaijun/article/details/51027831


分享到:
评论

相关推荐

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

    MySQL触发器是数据库管理系统提供的一种机制,用于在特定的数据操作(如INSERT、UPDATE、DELETE)发生之前或之后自动执行预定义的SQL语句。这些触发器可以用来实现复杂的业务规则,确保数据的一致性和完整性,或者...

    mysql中触发器使用详解.docx

    MySQL中的触发器是一种数据库对象,它与特定的表相关联,并在对表执行INSERT、UPDATE或DELETE操作之前或之后自动执行预定义的SQL语句。触发器的主要作用是增强数据库的逻辑控制,确保数据完整性、记录操作日志以及...

    MySQL触发器.pdf

    触发器还可以用来实现自定义的约束,例如确保某个字段的值始终符合特定条件。下面的示例展示了如何创建一个触发器,以防止在`products`表中插入或更新产品的价格低于0的情况: ```sql DELIMITER // CREATE TRIGGER ...

    Mysql触发器介绍

    触发器的概念最早出现在 MySQL 5.0 版本中,这一特性使得开发者能够编写自动化的数据库操作逻辑,用于响应特定的数据库事件,如插入、更新或删除记录等。在实际应用中,例如凤巢系统、北斗系统以及哥伦布系统等大型...

    MySQL触发器:数据库自动化的幕后英雄

    这类触发器可用于验证即将插入的数据是否符合预设规则,比如检查某一字段的值是否满足特定条件。 2. **AFTER INSERT 触发器**:在插入操作后触发。可用于更新相关表或字段的信息,如记录新增记录的时间戳。 3. *...

    [数据库] Navicat for MySQL触发器更新和插入操作1

    - 触发器还可以包含条件判断,例如只有满足特定条件时才执行。比如,只在特定时间插入数据: ```sql CREATE TRIGGER ins_info AFTER INSERT ON nhfx FOR EACH ROW BEGIN IF HOUR(NEW.RecordTime) = '20' THEN...

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

    ### MySQL数据库:触发器与事件调度器技术教程 #### 一、MySQL触发器基础 **1.1 触发器的概念与作用** 触发器是一种特殊类型的存储过程,它被设计成在特定的数据库操作(例如INSERT、UPDATE、DELETE)发生时自动...

    mysqltrigger触发器.pdf

    使用触发器可以实现类似于 CHECK 约束的功能,确保只有满足特定条件的数据才能被插入或更新。 ```sql CREATE TRIGGER check_age BEFORE INSERT ON users FOR EACH ROW BEGIN IF NEW.age SIGNAL SQLSTATE '...

    mysql触发器之创建使用触发器简单示例

    本文实例讲述了mysql触发器之创建使用触发器。分享给大家供大家参考,具体如下: 我们可以可以使用CREATE TRIGGER语句创建一个新的触发器,来看下具体的语法: CREATE TRIGGER trigger_name trigger_time trigger_...

    mysql触发器使用实例

    MySQL触发器是数据库管理系统中的一个重要特性,它允许在特定的数据操作(如INSERT、UPDATE或DELETE)发生时自动执行预定义的SQL语句。这为数据库的业务规则提供了强大的支持,可以确保数据的一致性和完整性。以下是...

    数据库原理及应用MySQL-触发器部分的知识点整理

    1. **概念**:触发器(Trigger)是MySQL提供的一种数据库对象,它在满足特定条件(如数据修改)时自动执行,以确保业务规则得到遵循。 2. **特点**:触发器的执行不依赖于程序调用,而是由数据库事件触发,如对表的...

    mysql中经典的触发器语法及相关配置

    - **自动执行**:触发器无需显式调用即可被执行,当满足预先设定的条件时,它们将自动触发。 - **权限管理**:创建触发器需要特定的权限,这包括与触发器关联的表的权限以及可能的SUPER权限(如果启用了二进制日志...

    mysql触发器的作用及语法

    触发器是一种特殊类型的存储过程,它在特定的数据库事件(如数据插入、更新或删除)发生时自动执行。触发器增强了数据库的安全性和完整性控制,能够实现比数据库本身提供的标准功能更精细和更复杂的数据控制。 ####...

    触发器和事件自动化.pdf

    其中,trigger_name是触发器的名称,trigger_time是触发器的时机,trigger_event是触发器的触发条件,tbl_name是触发器所作用的表名,trigger_body是触发器所做的事情。 三、NEW和OLD的使用 在创建触发器时,可以...

    mysql触发器.pdf

    MySQL触发器是数据库管理系统中的一种重要特性,它允许用户在特定的数据库操作(如INSERT、UPDATE或DELETE)发生之前或之后自动执行预定义的SQL语句。这种特性使得数据库能实现更复杂的业务逻辑和数据一致性规则,而...

    mysql函数与触发器(系统封装函数、自定义函数、创建查看删除触发器、触发器注意事项)..docx

    触发器是在数据库中存储的一段程序代码,当满足特定事件时自动执行。触发器可以用于实现复杂的业务逻辑和数据完整性。 ### 2、创建触发器 - **语法**: ```sql CREATE TRIGGER trigger_name trigger_time trigger...

    MySQL触发器深入解析.md

    MySQL触发器是一个强大的工具,用于在数据库层面实现复杂的业务逻辑和自动化任务。通过理解和正确使用触发器,可以有效地增强数据的一致性和安全性,同时提高数据库操作的效率。然而,触发器的逻辑对于开发者来说...

    触发器mysql

    触发器是数据库管理系统中一种特殊类型的存储过程,它会在特定的数据库事件(如数据的插入、更新或删除)发生时自动执行。下面将详细解析与触发器在MySQL中的使用相关的知识点。 ### 触发器的概念 触发器是一种由...

    MySQL触发器[收集].pdf

    MySQL触发器是数据库管理系统中的一个重要特性,主要用于在特定的数据操作事件(如INSERT、UPDATE或DELETE)发生时自动执行预定义的SQL语句。这使得数据库能够实现更复杂的业务规则和数据完整性约束,而不依赖应用...

Global site tag (gtag.js) - Google Analytics