首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

定时施行存储过程

2012-08-03 
定时执行存储过程?存储过程学习:http://www.111cn.net/tags.php/mysql%E5%AD%98%E5%82%A8%E8%BF%87%E7%A8%

定时执行存储过程

?

存储过程学习:http://www.111cn.net/tags.php/mysql%E5%AD%98%E5%82%A8%E8%BF%87%E7%A8%8B/

#查看event是否开启


mysql> show variables like '%sche%';

+---------------------------------------------------+---------+

| Variable_name ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | Value ? |

+---------------------------------------------------+---------+

| event_scheduler ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | OFF ? ? |

| performance_schema ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| OFF ? ? |

| performance_schema_events_waits_history_long_size | 10000 ? |

| performance_schema_events_waits_history_size ? ? ?| 10 ? ? ?|

| performance_schema_max_cond_classes ? ? ? ? ? ? ? | 80 ? ? ?|

| performance_schema_max_cond_instances ? ? ? ? ? ? | 1000 ? ?|

| performance_schema_max_file_classes ? ? ? ? ? ? ? | 50 ? ? ?|

| performance_schema_max_file_handles ? ? ? ? ? ? ? | 32768 ? |

| performance_schema_max_file_instances ? ? ? ? ? ? | 10000 ? |

| performance_schema_max_mutex_classes ? ? ? ? ? ? ?| 200 ? ? |

| performance_schema_max_mutex_instances ? ? ? ? ? ?| 1000000 |

| performance_schema_max_rwlock_classes ? ? ? ? ? ? | 30 ? ? ?|

| performance_schema_max_rwlock_instances ? ? ? ? ? | 1000000 |

| performance_schema_max_table_handles ? ? ? ? ? ? ?| 100000 ?|

| performance_schema_max_table_instances ? ? ? ? ? ?| 50000 ? |

| performance_schema_max_thread_classes ? ? ? ? ? ? | 50 ? ? ?|

| performance_schema_max_thread_instances ? ? ? ? ? | 1000 ? ?|

+---------------------------------------------------+---------+

17 rows in set (0.00 sec)


#将事件计划开启


mysql> ?set global event_scheduler = on;

Query OK, 0 rows affected (0.00 sec)


#创建表


mysql> create table test(

?? ?-> id int primary key auto_increment,

?? ?-> endtime timestamp default CURRENT_TIMESTAMP not null

?? ?-> );

Query OK, 0 rows affected (0.03 sec)


#插入数据


mysql> insert into test values(null,null);

Query OK, 1 row affected (0.00 sec)


#查询数据是否插入


mysql> select * from test;

+----+---------------------+

| id | endtime ? ? ? ? ? ? |

+----+---------------------+

| ?1 | 2011-01-03 16:57:00 |

+----+---------------------+

1 row in set (0.00 sec)


#创建存储过程


mysql> delimiter // ?


mysql> create procedure test_proc()


?? ?-> begin


?? ?-> update test set endtime=CURRENT_TIMESTAMP where id=1;


?? ?-> end;


?? ?-> //


#恢复分隔符为';'


mysql> delimiter ;


#创建event test_event,每隔30秒将执行存储过程test_proc,将当前时间更新到test表中id=1的记录的endtime字段中去.


create event if not exists test_event?

on schedule every 30 second?

on completion preserve

do call test_proc();


#一会儿后首次查看数据


mysql> select * from test;

+----+---------------------+

| id | endtime ? ? ? ? ? ? |

+----+---------------------+

| ?1 | 2011-01-03 17:00:19 |

+----+---------------------+

1 row in set (0.00 sec)


# 一分钟到一分半钟之内再次查看数据


mysql> select * from test;

+----+---------------------+

| id | endtime ? ? ? ? ? ? |

+----+---------------------+

| ?1 | 2011-01-03 17:01:19 |

+----+---------------------+


#这看看起来就像数据库中的触发器的作用很相似吧

-- 现在关闭事件任务


mysql> alter event test_event ON

?? ?-> COMPLETION PRESERVE DISABLE;

Query OK, 0 rows affected (0.00 sec)


#select查看数据后,再过30秒后再查看数据,发现数据不再改变了

-- 事件的开启


mysql> alter event test_event ON

?? ?-> COMPLETION PRESERVE ENABLE;

Query OK, 0 rows affected (0.00 sec)


#将事件计划关闭

?

mysql> set global event_scheduler = off;

Query OK, 0 rows affected (0.00 sec)


?

/*

注意到了么,这里还包含了三种mysql注释

从‘#’字符从行尾。

从/*序列到后面的*/序列

从‘-- ’序列到行尾。请注意‘-- ’(双破折号)注释风格要求第2个破折号后面至少跟一个空格符(例如空格、tab、换行符等等)。

*/

?

热点排行