一、什麼是事件?
一組sql集,用來執行定時任務,跟觸發器很像,都是被動執行的,事件是因為時間到了觸發執行,而觸發器是因為某件事件(增刪改)觸發執行。
二、開啟事件排程器
在建立事件時,首先要檢視當前是否已開啟事件排程器。可以用以下命令:
show variables like 『event_scheduler』;或
如若沒有被開啟,可通過執行如下mysql命令語句來開啟該功能:
set global event_scheduler=1;(或者true,on)
三、建立事件之事件實戰
首先,建立一張測試表test
create
table
`test` (
`id`
int(11) not
null auto_increment,
`t1` datetime default
null,
`id2`
int(11) not
null
default
'0',
primary
key (`id`)
) engine=innodb auto_increment=106
default charset=utf8
1、建立乙個每隔3秒往test表中插入一條資料的事件,**如下:
create event if
notexists test on schedule every 3
second
on completion preserve
doinsert
into test(id,t1) values('',now());
2、 建立乙個10分鐘後清空test表資料的事件
create event if
notexists test
on schedule
atcurrent_timestamp + interval
1minute
dotruncate
table test.aaa;
3、建立乙個在2017-03-12 00:00:00時刻清空test表資料的事件,**如下:
create event if
notexists test
on schedule
attimestamp
'2012-08-23 00:00:00'
dotruncate
table test;
4、建立乙個從2023年8月22日21點45分開始到10分鐘後結束,執行每隔3秒往test表中插入一條資料的事件,**如下:
create event if
notexists test on schedule every 3
second
starts '2012-08-22 21:49:00'
ends '2012-08-22 21:49:00'+ interval
10minute
on completion preserve
doinsert
into test(id,t1) values('',now());
5、通常的應用場景是通過事件來定期的呼叫儲存過程,下面是乙個簡單的示例,建立乙個讓test表的id2欄位每行加基數2的儲存過程,儲存過程**如下:
drop procedure
ifexists
test_add;
delimiter //
create
procedure
test_add
()begin
declare 1_id
intdefault 1;
declare 1_id2 int default
0;declare error_status int default
0;declare datas cursor for
select id from test;
declare continue handler for
not found set error_status=1;
open datas;
fetch datas into
1_id;
repeat
set1_id2=1_id2+2;
update test set id2=1_id2 where id=1_id;
fetch datas into
1_id;
until error_status
endrepeat;
close datas;
end//
6、事件設定2017-03-22 00:00:00時刻開始執行,每隔1呼叫一次儲存過程,40天後結束,**如下:
create event test on schedule every 1
daystarts '2012-08-22 00:00:00'
ends '2012-08-22 00:00:00'+interval
40day
on completion preserve
docall test_add();
四、修改事件alter event event_insert disable;//臨時關閉建立的事件event_insert_1
alter event event_insert_1 enable;//再次開啟臨時關閉的事件
alter event event_insert_1 rename to e_insert_1;//將事件event_insert_1的名字修改為事件e_insert_1
五、刪除事件
drop event if exists e_insert_1;
MySQL之事件學習整理
在使用事件之前需要啟用mysql的事件排程器 event scheduler 啟用方式如下 set global event scheduler 1 或者 set global event scheduler on 然後我們可以檢視排程器是否已經開啟 show variables like even...
觸控事件之事件傳遞
uiview是如何判定這個事件是否是自己應該處理的呢?hittest withevent 方法的處理流程如下 呼叫當前view的pointinside withevent 方法來判定觸控點是否在當前view內部,如果返回no,則hittest withevent 返回nil 如果返回yes,則向當前...
RT thread核心之事件
一 事件控制塊 在include rtdef.h中 ifdef rt using event flag defintions in event define rt event flag and 0x01 logic and define rt event flag or 0x02 logic or ...