1. 程式人生 > >mysql資料庫上使用定時器定時執行儲存過程建表(月表)

mysql資料庫上使用定時器定時執行儲存過程建表(月表)

最近有個需求,在mysql資料庫中每個月建自動一個表,把該月的資料儲存到該月對應的表中。

一、建立儲存過程

期望表名:
login_history_2017_07(login_history_YYYY_MM)
欄位:
id (int(11) primary key auto_increment)
uid (char(10) not null)
ip (char(200) not null)

DELIMITER //
create procedure create_login_history_table()
begin 
    set @tbCreate = concat('create table '
,'login_history_',date_format(now()
,'%YYYY_%mm'),"( id int(11) primary key auto_increment, uid char(10) not null, ip char(200) not null)ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='登入資訊記錄'");
prepare stmt from @tbCreate; execute stmt; end;//

create_login_history_table():儲存過程名稱
set @tbCreate

:定義變數@tbCreate
concat():拼接所有引數返回字串
date_format():第一個引數now()為當前時間的時間戳,第二個引數’%YYYY_%mm’把時間格式化為例:2017_07格式字串返回。

二、定義定時器

指定時間開始每個月執行一次儲存過程create_login_history_table()

CREATE EVENT create_login_history_table ON SCHEDULE every 1 month STARTS TIMESTAMP '2017-08-01 00:00:00' do call create_login_history_table()

every 1 month:每個月執行一次
STARTS TIMESTAMP ‘2017-08-01 00:00:00’:在2017-08-01 00:00:00開始執行

PS:

1、刪除定時器
drop event create_login_history_table;
2、暫停定時器
ALTER EVENT create_login_history_table DISABLE;
3、啟動定時器
ALTER EVENT create_login_history_table ENABLE;
4、修改定時器
ALTER EVENT create_login_history_table
   ON SCHEDULE EVERY 5 DAY;
5、一些定時例子
/*每10秒*/
create event create_login_history_table on schedule every 10 second do ...
/*2天后*/
CREATE EVENT create_login_history_table ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 2 DAY do ...
/*指定時間*/
CREATE EVENT create_login_history_table ON SCHEDULE AT TIMESTAMP '2017-08-01 00:00:00' do ...
/*每天*/
CREATE EVENT create_login_history_table ONSCHEDULE EVERY 1 DAY DO ...
/*每天定時執行,5天后停止執行*/
CREATE EVENT create_login_history_table ON SCHEDULE EVERY 1 DAY ENDS CURRENT_TIMESTAMP + INTERVAL 5 DAY
DO  ...
/*5天后開啟每天執行,一個月後停止執行*/
CREATE EVENT e_test ON SCHEDULE EVERY 1 DAY STARTS CURRENT_TIMESTAMP+ INTERVAL 5 DAY ENDS CURRENT_TIMESTAMP+ INTERVAL 1 MONTH DO ...

相關推薦

mysql資料庫使用定時定時執行儲存過程

最近有個需求,在mysql資料庫中每個月建自動一個表,把該月的資料儲存到該月對應的表中。 一、建立儲存過程 期望表名: login_history_2017_07(login_history_YYYY_MM) 欄位: id (int(11) pri

mysql資料庫超時自動改變訂單狀態 儲存過程 定時任務的運用

DELIMITER | DROP PROCEDURE IF EXISTS e_test |CREATE PROCEDURE e_test() BEGIN update hb_hongbao set addtime=SYSDATE(15) where SYSDATE(15)>over_time and

【轉】MySQL資料庫 外來鍵、檢視、儲存過程、觸發器的優缺點

https://www.yiibai.com/mysql/introduction-sql-views.html 檢視 使用資料庫檢視的優點 資料庫檢視允許簡化複雜查詢:資料庫檢視由與許多基礎表相關聯的SQL語句定義。 您可以使用資料庫檢視來隱藏終端使用者和外部應用

mysql資料庫的連線以及增刪改查Java程式碼實現Statement版

資料庫: create table t1(id int primary key not null auto_increment,name varchar(32),password varchar(32)); insert into t1(name,password) va

mysql資料庫的連線以及增刪改查Java程式碼實現PreparedStatement版

資料庫: create table t1(id int primary key not null auto_increment,name varchar(32),password varchar(32)); insert into t1(name,password) v

再論c#獲取儲存過程返回值包括SqlSugar

  其實這個問題好多年以前研究過: https://blog.csdn.net/xpnew/article/details/6909902 最近因為需要統計日結月結,給同事寫了一套呼叫儲存過程的程式碼。同時因為專案ORM層是通過SqlSugar實現的,就又研究了一下SqlSugar呼叫儲存過程

linux定時備份mysql資料庫,及解決crontab執行時生成資料庫檔案為空的問題

一、用命令實現備份 進入mysql的bin目錄(mysql安裝目錄的下一級目錄) 1、備份資料 #mysqldump -uusername -ppassword discuz >discuz_2010-04-01.sql -uusernae:-u+mysql的使用者名

這是一個定時,定時執行一次,用在定時發送郵件

mail pri 創建 sendmail public sta 發送 mes times public static void main(String[] args) { //1. 創建計時器類 Timer timer = new Timer(); //2. 創建任

定時&改變定時執行頻率

rgs class lin 調用 key sys art console datetime static System.Threading.Timer timer; static void Main(string[] args)

執行緒鎖 死鎖現象 遞迴鎖 訊號量 條件定時 佇列 執行緒池

鎖是用來做什麼的?    保證資料的安全的GIL是幹什麼的?      鎖執行緒有了GIL還要鎖幹啥?      有了GIL還是會出現資料不安全的現象,所以還是要用鎖 import time from threading import Thread,Lock n = 100 def func(lock

精簡mysql資料庫備份檔案 - windows定時任務

此前一篇文章,寫了一個通過windows定時任務,執行mysql資料庫備份的指令碼。 點此進入上一篇文章->通過windows伺服器定時任務,定時備份mysql資料庫。 50多個G的資料庫備份完成sql大概在20G,通過壓縮後大概在2G左右。 長時間進行後硬碟吃不消。所以做了一

Oracle job 定時執行 儲存過程

一:簡單測試job的建立過程案例: 1,先建立一張JOB_TEST表,欄位為a 日期格式 SQL> create table JOB_TEST(a date); Table created SQL> commit; Commit complete

linux下如何實現mysql資料庫每天自動備份定時備份

www.syncnavigator.cn SyncNavigator 做資料同步時所支援的資料庫型別: 支援sqlserver 2000-2014所有版本,全相容,和MYsql 4.x 、MYsql 5.x 、MYsql 6.x版本。 來源資料庫和目標資料庫可以版本不同

linux下使用crontab如何實現mysql資料庫每天自動備份定時備份

直接上教程,基本上出現的問題都在下面了; 首先檢查你的伺服器是否安裝了crontab,命令如下: 命令: crontab       如果提示-bash: crontab:commandnot fo

定時執行儲存過程

需求:客戶要求把A系統出來的一些資料每月底同步到指定表(在A系統資料庫)中。 實現方案:往指定表插資料採用儲存過程(procA)。每月底執行採用windows任務定時或“SQL Server代理——作業”實現。 怎麼使用windows自帶任務定時執行bat實現上述需求? 1、先建

C#定時 定時執行任務 執行

http://www.cnblogs.com/linzheng/archive/2011/02/21/1960276.html C#實現Web應用程式定時啟動任務      在業務複雜的應用程式中,有時候會要求一個或者多個任務在一定的時間或者一定的時間間隔內計劃進行,比如

Oracle定時任務執行儲存過程帶引數

儲存過程: create or replace procedure pro_test (retCode out number, retMsg out varchar2) is  vcrm v_prod_inst%ROWTYPE; TYPE ref_cursor_type I

關於Spring容器中定時到時執行會出現兩個執行緒同時執行的問題

最近公司有一個小需求,是需要定時去從某一個視訊供應商下載視訊檔案,問題很簡單,直接使用quartz,編寫相應的定時器程式碼,同時配置相應的定時器時間,但是在定時執行之後會出現兩個執行緒同時執行定時任務的問題,並且這兩個執行緒併發執行,從而一直影響到視訊檔案下載。

oracle的一個定時執行任務job定時執行儲存過程

做一個小專案時,需要做到登入密碼輸入三次錯誤,鎖定該賬號,然後在第二天凌晨零點的時候,解鎖所有鎖定賬號。這個可以在表中加上一個時間戳欄位,然後後期比對時間戳欄位來對相應的賬號進行解鎖,我比較偷懶,就想

springmvc 定時方法執行2次的 解決辦法

把定時的程式碼放到一個單獨的配置檔案中,然後在web.xml檔案中載入這個定時的配置檔案。 第一步:把定時器程式碼從applicationContext.xml裡摘出來,新建一個applicationContext-quartz.xml 第二步:把applicationContext-q