语法格式
CREATE [DEFINER = { user | CURRENT_USER }] EVENT
[IF NOT EXISTS]
ON SCHEDULE
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE]
[GLOBAL | LOCAL]
[COMMENT 'comment']
DO event_body;
schedule:
AT
timestamp
[+
INTERVAL
interval]
...
|
EVERY
interval
[STARTS
timestamp
[+
INTERVAL
interval]
...]
[ENDS timestamp [+ INTERVAL interval] ...]
interval:
quantity { YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |WEEK |
SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE | DAY_SECOND |
HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND }
表5- 204 参数说明
字段名称
含义说明
event_name
创建的event 名字(唯一确定的)
ON SCHEDULE
计划任务。
schedule
决定event 的执行时间和频率(注意时间一定要是将来的时
间,过去的时间会出错),有两种形式AT 和EVERY。
[ON
COMPLETION
[NOT] PRESERVE]
可选项,默认是ON COMPLETION NOT PRESERVE,即计
划任务执行完毕后自动
drop
该事件;ON
COMPLETION PRESERVE 则不会drop 掉。
COMMENT
'comment'
可选项,comment 用来描述event;相当于注释,最大长度
64 个字节。
[ENABLE
|
DISABLE]
设定event 的状态,默认ENABLE:表示系统尝试执行这个
事件,DISABLE:关闭该事件,可以用alter 修改。
[GLOBAL | LOCAL]
GLOBAL 表示各节点独占执行,LOCAL 表示各节点独立执
GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1457
字段名称
含义说明
行
DO event_body
需要执行的sql 语句(可以是复合语句)。CREATE EVENT
在存储过程中使用是合法的。
注意
默认创建事件存储在当前库中,
也可显示指定事件创建在哪个库
中;
通过show events 只能查看当前库中创建的事件;
事件执行完即释放,如立即执行事件,执行完后,事件便自动删
除,多次调用事件或等待执行事件可以查看到;
如果两个事件需要在同一时刻调用,gbase 会确定调用他们的顺
序,如果要指定顺序,需要确保一个事件至少在另一个事件1 秒后
执行;
对于递归调度的事件,结束日期不能在开始日期之前;
select 可以包含在一个事件中,然而他的结果消失了,就好像没
执行过;
创建事件时不支持LOAD 语句;
event 不支持procedure、function、trigger 等对象的创建。
示例
创建测试表:
gbase> DROP TABLE IF EXISTS events_list;
gbase> CREATE TABLE events_list(event_name VARCHAR(20) NOT NULL, ev
ent_started TIMESTAMP NOT NULL);
创建事件1(立即启动事件):
CREATE EVENT event_now
ON SCHEDULE
AT NOW()
DO insert into events_list values('event_now', now());
查看事件执行结果:
gbase> select * from events_list;
+------------+---------------------+
| event_name | event_started
|
+------------+---------------------+
| event_now | 2017-07-01 04:06:40 |
+------------+---------------------+
创建事件2(每分钟启动事件):
GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1458
CREATE EVENT test.event_minute
ON SCHEDULE
EVERY 1 MINUTE
DO insert into events_list values('event_now', now());
查看事件执行结果:
gbase> SELECT * FROM events_list;
+-------------+---------------------+
| event_name | event_started
|
+-------------+---------------------+
| event_now | 2017-07-01 04:26:53 |
| event_now | 2017-07-01 04:27:53 |
| event_now | 2017-07-01 04:28:53 |
+-------------+---------------------+