關於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...