日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
MySOL中Event用法詳解,零基礎(chǔ)快速入門必看

一、Event概念

Event即事件,也是一種數(shù)據(jù)庫(kù)對(duì)象,又叫時(shí)間觸發(fā)器或者事件調(diào)度器,與triggers的事件觸發(fā)不同,tiggers會(huì)因?yàn)閡pdate、delete、insert等事件觸發(fā),而event類似與linux crontab計(jì)劃任務(wù),用于時(shí)間觸發(fā),當(dāng)?shù)搅嗽O(shè)定執(zhí)行時(shí)間時(shí),系統(tǒng)會(huì)觸發(fā)相關(guān)的SQL語(yǔ)句或存儲(chǔ)過程,相當(dāng)于我們給存儲(chǔ)過程創(chuàng)建了定時(shí)任務(wù)。

▲ 適用范圍:對(duì)于每隔一段時(shí)間就有固定需求的操作,如創(chuàng)建表,刪除數(shù)據(jù)、插入數(shù)據(jù),修改數(shù)據(jù)等操作,可以使用event來(lái)處理。

▲ 例如:在每月的1日凌晨1點(diǎn)自動(dòng)創(chuàng)建下個(gè)月需要使用的三張表;在每月第一天時(shí)查詢匯總上月商品的銷售匯總信息,然后將這些信息插入到匯總信息表里。這些情況都可以使用event來(lái)處理。

二、Event創(chuàng)建語(yǔ)法

CREATE Event [IF NOT EXISTS] event_name -- 創(chuàng)建使用create event

ON SCHEDULE schedule -- on schedule 什么時(shí)候來(lái)執(zhí)行,執(zhí)行頻率

[ON COMPLETION [NOT] PRESERVE] -- 調(diào)度計(jì)劃執(zhí)行完成后是否還保留

[ENABLE | DISABLE] -- 是否開啟事件,默認(rèn)開啟

[COMMENT 'comment'] -- 事件的注釋

DO event_body; -- 這個(gè)調(diào)度計(jì)劃要做什么?

創(chuàng)建語(yǔ)法中[ ]里的內(nèi)容是可以省略的。

[IF NOT EXISTS]如果新建的event_name系統(tǒng)里不存在,則創(chuàng)建一個(gè)新的,如果已經(jīng)存在了,則提示已經(jīng)存在。如果省略的話,系統(tǒng)里不存在新的event_name則創(chuàng)建成功,如果已經(jīng)存在了,會(huì)保存。

[ON COMPLETION [NOT] PRESERVE 如果帶了not當(dāng)事件執(zhí)行完后,就自動(dòng)刪除,不保留事件。如果不加not事件執(zhí)行完會(huì)保留下來(lái),該項(xiàng)不寫的時(shí)候,默認(rèn)是執(zhí)行完事件保留下來(lái)。

[ENABLE | DISABLE]ENABLE時(shí)事件開啟,當(dāng)?shù)搅耸录?zhí)行時(shí)間,系統(tǒng)會(huì)自動(dòng)執(zhí)行event_body里定義的語(yǔ)句,如果設(shè)置的是DiSABLE則事件關(guān)閉,到了執(zhí)行時(shí)間,事件也不會(huì)執(zhí)行。該項(xiàng)沒有設(shè)置時(shí),默認(rèn)為事件開啟。

[COMMENT 'comment']comment是事件注釋,對(duì)事件進(jìn)行解釋說明。

event_body事件主體,可以是單條DML語(yǔ)句,可以是多條DML語(yǔ)句,多條時(shí)需要寫在begin……end之間,也可調(diào)用存儲(chǔ)過程。

三、執(zhí)行時(shí)間說明

執(zhí)行時(shí)間說明:

1.單次計(jì)劃:

在2019年2月1日4點(diǎn)執(zhí)行一次

on schedule at '2019-02-01 04:00:00’

2. 重復(fù)計(jì)劃

on schedule every 1 second 每秒執(zhí)行一次

on schedule every 1 minute 每分鐘執(zhí)行一次

也可以是hour、day、week、month、year

3.指定開始時(shí)間的重復(fù)計(jì)劃

每天在20:00:00執(zhí)行一次

on schedule every 1 day starts ‘2021-6-16 20:00:00'

四、如何查看Event

● 查看有哪些event

Show events; 或者通過Select * from information_schema.events;

● 查看event具體內(nèi)容

SHOW CREATE EVENT event_name1;

● 刪除event

DROP EVENT event_name;

● 修改event

可以先刪除,再重新創(chuàng)建
也可以ALTER EVENT event_name …… 省略號(hào)后邊的內(nèi)容和創(chuàng)建event一樣

五、實(shí)例

先創(chuàng)建一個(gè)表student_bak,用此表來(lái)備份student表的數(shù)據(jù);

create table student_bak select * from student;

接著,我們創(chuàng)建存儲(chǔ)過程student_bak_pro,用來(lái)備份student表中的最新數(shù)據(jù)

CREATE DEFINER=`root`@`localhost` PROCEDURE `student_bak_pro`()
BEGIN
insert into student_bak select * from student t where not EXISTS (select * from student_bak t1 where t1.sno=t.sno);
COMMIT;
END

然后,我們?cè)賱?chuàng)建event,讓系統(tǒng)每3秒自動(dòng)執(zhí)行以下存儲(chǔ)過程student_bak_pro

CREATE Event student_bak_event
ON SCHEDULE every 3 second
ON COMPLETION PRESERVE
DO call student_bak_pro();

最后,我們給student表新插入三條條數(shù)據(jù),然后我們?nèi)ビ^察student_bak表里數(shù)是不是也插入了最新的數(shù)據(jù)。

INSERT INTO student VALUES (2008063, 'Penqun63', '男', 12, '2009-02-24', NULL),(2008064, 'Penqun63', '男', 12, '2009-02-24', NULL),
(2008065, 'Penqun65', '男', 12, '2009-02-24', NULL);

網(wǎng)站題目:MySOL中Event用法詳解,零基礎(chǔ)快速入門必看
文章鏈接:http://www.dlmjj.cn/article/djsihdo.html