mysql如何讓乙個儲存過程定時執行

2022-09-08 02:09:11 字數 2441 閱讀 2213

1.建立乙個表

create table aaa (timeline timestamp);

2.建立儲存過程test

create procedure test ()

begin

update examinfo set endtime = now() where id = 14;

end;

3.建立事件e_test

create event if not exists e_test

on schedule every 30 second

on completion preserve

do call test();

##每隔30秒將執行儲存過程test,將當前時間更新到表中id=14的記錄的endtime欄位中去

4.檢視event是否開啟

show variables like 『%sche%』;

show variables like 『log_%』;

5.關閉事件任務

set global event_scheduler = off;

alter event e_test on completion preserve disable;

6.開戶事件任務

set global event_scheduler = on;

alter event e_test on completion preserve enable;

7.舉例如下:

1) 首先來看乙個簡單的例子來演示每秒插入一條記錄到資料表

create event e_test_insert

on schedule every 1 second

do insert into aaa values (current_timestamp);

等待3秒鐘後,再執行查詢看看:

mysql> select * from aaa;

±--------------------+

| timeline |

±--------------------+

| 2007-07-18 20:44:26 |

| 2007-07-18 20:44:27 |

| 2007-07-18 20:44:28 |

±--------------------+

2) 5天後清空test表:

create event e_test

on schedule at current_timestamp + interval 5 day

do truncate table aaa;

3) 2023年7月20日12點整清空test表:

create event e_test

on schedule at timestamp 『2007-07-20 12:00:00』

do truncate table aaa;

4) 每天定時清空test表:

create event e_test_delete

on schedule every 1 hour

do truncate table aaa;

5) 5天後開啟每天定時清空test表:

create event e_test

on schedule every 1 day

starts current_timestamp + interval 5 day

do truncate table aaa;

6) 每天定時清空test表,5天後停止執行:

create event e_test

on schedule every 1 day

ends current_timestamp + interval 5 day

do truncate table aaa;

7) 5天後開啟每天定時清空test表,乙個月後停止執行:

create event e_test

on schedule every 1 day

starts current_timestamp + interval 5 day

ends current_timestamp + interval 1 month

do truncate table aaa;

[on completion [not] preserve]可以設定這個事件是執行一次還是持久執行,預設為not preserve。

8) 每天定時清空test表(只執行一次,任務完成後就終止該事件):

create event e_test

on schedule every 1 day

on completion not preserve

do truncate table aaa;

[enable | disable]可是設定該事件建立後狀態是否開啟或關閉,預設為enable。

[comment 『comment』]可以給該事件加上注釋。

mysql 讓乙個儲存過程定時作業

以下例子主要是實現簡單的mysq 定時作業 1 在mysql 中建立乙個資料庫 test1 語句 create database test1 2 建立表examinfo create table examinfo id int auto increment not null,endtime date...

MySql建立乙個儲存過程

mysql 儲存過程是從 mysql 5.0 新功能。儲存過程的長處有一籮筐。只是最基本的還是執行效率和sql 封裝。特別是 sql 封裝功能,假設沒有儲存過程,在外部程式訪問資料庫時 比如 php 要組織非常多 sql 語句。特別是業務邏輯複雜的時候,一大堆的 sql 和條件夾雜在 php 中,讓...

乙個儲存過程

create or replace package abc zys is procedure daily census end abc zys 建乙個包,包中有儲存過程daily census。不涉及任何引數。create or replace package body abc zys is pro...