test comment 'e_test_cm';
5.4.2删除事件(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;
5.4.3查看事件
a、查看一个event的详细信息可以用下面的视图:
SELECT * FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_NAME = 'test_insert' AND EVENT_SCHEMA = 'test'\G;
b、简要列出所有的event:show events
语法:
SHOW EVENTS [FROM schema_name]
[LIKE 'pattern' | WHERE expr]
格式化显示所有event
SHOW EVENTS\G
格式化显示test用户的event
show events FROM test;
c、查看event的创建信息
SHOW CREATE EVENT event_name
show create event test.e_test\G
5.5、结论
该特性确实非常有用,可作为定时清空数据表、监控主从服务器、汇总数据到另一张表等等,并且可以精确到每秒,实时性也可以得到保障。
不过如果当两个事件的针对相同的对象的时候,会出现冲突,这种情况还不明确是我理解的问题还是确实是这样,比如每秒插入和定时删除就会冲突。除了调度SQL语句之外,MYSQL的调度器也可以调度存储过程。
5.6、缺点
SELECT * FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_NAME = 'test_insert' AND EVENT_SCHEMA = 'troaudit_db'\G;
*************************** 1. row ***************************
EVENT_CATALOG: NULL
EVENT_SCHEMA: troaudit_db
EVENT_NAME: event_session_table
DEFINER: egilance@%
TIME_ZONE: SYSTEM
EVENT_BODY: SQL
EVENT_DEFINITION: BEGIN
CALL create_table_process;
END
EVENT_TYPE: RECURRING
EXECUTE_AT: NULL
INTERVAL_VALUE: 1800
INTERVAL_FIELD: SECOND
SQL_MODE:
STARTS: 2011-08-23 10:51:28
ENDS: NULL
STATUS: ENABLED
ON_COMPLETION: PRESERVE
CREATED: 2011-08-23 10:51:28
LAST_ALTERED: 2011-08-23 10:51:28
LAST_EXECUTED: 2011-08-23 17:55:51
EVENT_COMMENT:
ORIGINATOR: 0
CHARACTER_SET_CLIENT: utf8
COLLATION_CONNECTION: utf8_general_ci
DATABASE_COLLATION: utf8_unicode_ci
1 row in set (0.00 sec)
MySQL只会记录最后一次调度的时间,如果时间往前调整,小于最近执行的时间,则不会执行事件调度。
摘自:Padden.Zhang的专栏