MYSQL儲存過程及事件

2021-06-26 19:43:47 字數 1847 閱讀 1609

關於mysql下的儲存過程以及事件的建立

下面這個儲存過程主要實現的功能就是查詢表裡面半年前的資料,如果有就存到檔案,然後將資料刪除。

create definer = `root`@`localhost` procedure `newproc`()

begin

select count(*) into @count from s_account where date_add(registertime, interval 6 month)<=now();

if @count>0

then

set @today=time_to_sec(now());

set @select_sql=concat("select * from s_account where date_add(registertime, interval 6 month)<=now()

into outfile 'c:/\\",@today,".txt' fields terminated by ',';");

prepare charu from @select_sql;

execute charu;

delete from s_account where date_add(registertime, interval 6 month)<=now() ;

commit;

end if;

end;

fields terminated by ',' 欄位間分割符

optionally enclosed by '"' 將字段包圍 對數值型無效

lines terminated by '\n' 換行符

下面是建立事件的** ,邏輯是從'2014-11-05 09:00:00'開始,每天去執行pro_test()這個過程。

create definer=`root`@`localhost` 

event `newevent`

on schedule every 1 day starts '2014-11-05 09:00:00'

on completion not preserve

enable

docall pro_test();

當我們在建立事件的時候有可能會提示事件處於關閉狀態,這個時候就需要手動開啟事件。

首先在sql中查詢計畫事件的狀態:show variables like 'event_scheduler'

如果返回的是off表示當前是關閉狀態,如果是on當前已經開啟了計畫任務。

在mysql程式的目錄下找到my.ini檔案,新增乙個項:event_scheduler = 1

儲存後重啟mysql服務即可,重啟服務可以在服務管理裡面找到.

也可以用指令碼來實現:

mysql event_scheduler

開啟event_scheduler sql指令:

set global event_scheduler = on;

set @@global.event_scheduler = on;

set global event_scheduler = 1;

set @@global.event_scheduler = 1;

相反,關閉event_scheduler指令:

set global event_scheduler = off;

set @@global.event_scheduler = off;

set global event_scheduler = 0;

set @@global.event_scheduler = 0;

MYSQL儲存過程及事件

關於mysql下的儲存過程以及事件的建立 以下這個儲存過程主要實現的功能就是查詢表裡面半年前的資料,假設有就存到檔案。然後將資料刪除。create definer root localhost procedure newproc begin select count into count from ...

mysql 儲存過程與事件

現在有個需求,每隔一小時,改變一下資料庫中userinfo的記錄 實現步驟 1 建立儲存過程 有入參 inp aint create procedure pro del userinfo begin delete from userinfo case p a when 1 then insert i...

MySQL 事件 觸發器 儲存過程

事件 檢視事件狀態 show variables like event scheduler 開啟事件 set global event scheduler on 觸發器語法 建立觸發器 delimiter 定義開始和結束的標誌 create trigger triggername after bef...