需求如下:
由于给商品做促销活动,添加促销活动时设置促销开始时间,到时间后自动把该数据状态由未开始更新为进行中,这时想到了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触发器是数据库管理系统提供的一种机制,用于在特定的数据操作(如INSERT、UPDATE、DELETE)发生之前或之后自动执行预定义的SQL语句。这些触发器可以用来实现复杂的业务规则,确保数据的一致性和完整性,或者...
MySQL中的触发器是一种数据库对象,它与特定的表相关联,并在对表执行INSERT、UPDATE或DELETE操作之前或之后自动执行预定义的SQL语句。触发器的主要作用是增强数据库的逻辑控制,确保数据完整性、记录操作日志以及...
触发器还可以用来实现自定义的约束,例如确保某个字段的值始终符合特定条件。下面的示例展示了如何创建一个触发器,以防止在`products`表中插入或更新产品的价格低于0的情况: ```sql DELIMITER // CREATE TRIGGER ...
触发器的概念最早出现在 MySQL 5.0 版本中,这一特性使得开发者能够编写自动化的数据库操作逻辑,用于响应特定的数据库事件,如插入、更新或删除记录等。在实际应用中,例如凤巢系统、北斗系统以及哥伦布系统等大型...
这类触发器可用于验证即将插入的数据是否符合预设规则,比如检查某一字段的值是否满足特定条件。 2. **AFTER INSERT 触发器**:在插入操作后触发。可用于更新相关表或字段的信息,如记录新增记录的时间戳。 3. *...
- 触发器还可以包含条件判断,例如只有满足特定条件时才执行。比如,只在特定时间插入数据: ```sql CREATE TRIGGER ins_info AFTER INSERT ON nhfx FOR EACH ROW BEGIN IF HOUR(NEW.RecordTime) = '20' THEN...
### MySQL数据库:触发器与事件调度器技术教程 #### 一、MySQL触发器基础 **1.1 触发器的概念与作用** 触发器是一种特殊类型的存储过程,它被设计成在特定的数据库操作(例如INSERT、UPDATE、DELETE)发生时自动...
使用触发器可以实现类似于 CHECK 约束的功能,确保只有满足特定条件的数据才能被插入或更新。 ```sql CREATE TRIGGER check_age BEFORE INSERT ON users FOR EACH ROW BEGIN IF NEW.age SIGNAL SQLSTATE '...
本文实例讲述了mysql触发器之创建使用触发器。分享给大家供大家参考,具体如下: 我们可以可以使用CREATE TRIGGER语句创建一个新的触发器,来看下具体的语法: CREATE TRIGGER trigger_name trigger_time trigger_...
MySQL触发器是数据库管理系统中的一个重要特性,它允许在特定的数据操作(如INSERT、UPDATE或DELETE)发生时自动执行预定义的SQL语句。这为数据库的业务规则提供了强大的支持,可以确保数据的一致性和完整性。以下是...
1. **概念**:触发器(Trigger)是MySQL提供的一种数据库对象,它在满足特定条件(如数据修改)时自动执行,以确保业务规则得到遵循。 2. **特点**:触发器的执行不依赖于程序调用,而是由数据库事件触发,如对表的...
- **自动执行**:触发器无需显式调用即可被执行,当满足预先设定的条件时,它们将自动触发。 - **权限管理**:创建触发器需要特定的权限,这包括与触发器关联的表的权限以及可能的SUPER权限(如果启用了二进制日志...
触发器是一种特殊类型的存储过程,它在特定的数据库事件(如数据插入、更新或删除)发生时自动执行。触发器增强了数据库的安全性和完整性控制,能够实现比数据库本身提供的标准功能更精细和更复杂的数据控制。 ####...
其中,trigger_name是触发器的名称,trigger_time是触发器的时机,trigger_event是触发器的触发条件,tbl_name是触发器所作用的表名,trigger_body是触发器所做的事情。 三、NEW和OLD的使用 在创建触发器时,可以...
MySQL触发器是数据库管理系统中的一种重要特性,它允许用户在特定的数据库操作(如INSERT、UPDATE或DELETE)发生之前或之后自动执行预定义的SQL语句。这种特性使得数据库能实现更复杂的业务逻辑和数据一致性规则,而...
触发器是在数据库中存储的一段程序代码,当满足特定事件时自动执行。触发器可以用于实现复杂的业务逻辑和数据完整性。 ### 2、创建触发器 - **语法**: ```sql CREATE TRIGGER trigger_name trigger_time trigger...
MySQL触发器是一个强大的工具,用于在数据库层面实现复杂的业务逻辑和自动化任务。通过理解和正确使用触发器,可以有效地增强数据的一致性和安全性,同时提高数据库操作的效率。然而,触发器的逻辑对于开发者来说...
触发器是数据库管理系统中一种特殊类型的存储过程,它会在特定的数据库事件(如数据的插入、更新或删除)发生时自动执行。下面将详细解析与触发器在MySQL中的使用相关的知识点。 ### 触发器的概念 触发器是一种由...
MySQL触发器是数据库管理系统中的一个重要特性,主要用于在特定的数据操作事件(如INSERT、UPDATE或DELETE)发生时自动执行预定义的SQL语句。这使得数据库能够实现更复杂的业务规则和数据完整性约束,而不依赖应用...