發(fā)布時(shí)間:2015-10-22 10: 54: 43
MySQL 事件是按計(jì)劃運(yùn)行工作,因此可稱為計(jì)劃事件。當(dāng)創(chuàng)建一個(gè)事件時(shí),是創(chuàng)建一個(gè)有名的數(shù)據(jù)庫對象,包含在一個(gè)或多個(gè)規(guī)律區(qū)間運(yùn)行一個(gè)或多個(gè) SQL 語句,并在特定的日期時(shí)間開始及結(jié)束。從概念上來看,這類似 Windows 任務(wù)計(jì)劃程序。
點(diǎn)擊 Navicat 主界面中的“時(shí)間”按鈕,可打開事件對象列表。需要注意的是,MySQL 事件計(jì)劃需要在 MySQL 5.1.6 版本中添加,其他版本暫不支持。
定義:包括一個(gè)有效的 SQL 語句,這可以是一個(gè)簡單的語句,如 SELECT 或 INSERT,或一個(gè)用 BEGIN 和END 寫的復(fù)合語句。復(fù)合語句可以包含聲明循環(huán)和其它控制結(jié)構(gòu)語句。
● 定義者:指定當(dāng)在事件運(yùn)行時(shí)檢查訪問權(quán)限要使用的用戶帳號。默認(rèn)定義者值是運(yùn)行 CREATE EVENT 語句的的用戶。(和DEFINER = CURRENT_USER 相同。)如果給予一個(gè)用戶值,它應(yīng)該是一個(gè) 'user_name'@'host_name' 格式的MySQL 帳號(使用與 GRANT 語句相同的格式)。user_name 及 host_name 值都是必須的。
● 狀態(tài):可以創(chuàng)建一個(gè)事件但可以用 DISABLE 關(guān)鍵字保持不激活?;蛘呖梢杂?ENABLE 默認(rèn)狀態(tài),這是激活。
● ON COMPLETION:正常情況下,一旦事件已過期,它將立即刪除??梢酝ㄟ^指定 ON COMPLETION PRESERVE 來重寫此性能。ON COMPLETION NOT PRESERVE 只是使默認(rèn)非持久性的性能明確。
計(jì)劃:
● AT:包含日期和時(shí)間,或必須是一個(gè)解析為 datetime 值的表達(dá)式。使用+INTERVAL 來創(chuàng)建一個(gè)事件,它發(fā)生在與當(dāng)前日期和時(shí)間有關(guān)的將來某個(gè)時(shí)刻。
● EVERY:在定期間隔重復(fù)的行動,可以在 EVERY 子句之后加 interval。(+INTERVAL 與 EVERY 不能同時(shí)使用。)
● STARTS:EVERY 子句還可能包含一個(gè)非必須的 STARTS 子句。STARTS 之后的 timestamp 值表示行動應(yīng)該何時(shí)開始重復(fù),也可以用+INTERVAL 間隔指定「由現(xiàn)在開始」的時(shí)間量。
例如:EVERY 3 MONTH STARTS CURRENT_TIMESTAMP + 1 WEEK 的意思是「每 3 個(gè)月,從現(xiàn)在起一周后開始」。
● ENDS:EVERY 子句還可包含一個(gè)非必須的 ENDS 子句。ENDS 關(guān)鍵字之后的 timestamp 值告訴 MySQL 何時(shí)停止重復(fù)事件。也可以用+INTERVAL 間隔與 ENDS 一起。
例如:EVERY 12 HOUR STARTS CURRENT_TIMESTAMP + INTERVAL 30 MINUTE ENDS CURRENT_TIMESTAMP + INTERVAL 4 WEEK 相當(dāng)于「每十二個(gè)小時(shí),從現(xiàn)在起三十分鐘后開始,并于現(xiàn)在起四個(gè)星期后結(jié)束」。
備注:timestamp 是必須發(fā)生在未來不能安排在過去的一個(gè)事件。
interval 區(qū)間由兩部份組成,數(shù)量和時(shí)間單位。
*YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |
DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND
關(guān)于 MariaDB 事件的內(nèi)容基本就這些,想要獲取更多的 Navicat 教程,可查看Navicat 中文官網(wǎng)。
展開閱讀全文
︾