開啟事件
a.查詢事件是否開啟 show variables like '%scheduler%';
b.設定開啟事件 set global event_scheduler = on;
drop procedure if exists pro_create_log_detail;
create procedure pro_create_log_detail()
begin
declare i int;
set i=0;
while i<12 do
set @sql_create_table_log_detail = concat('create table t_ucp_log_detail_',date_format(date_add(curdate(), interval i month),'%y%m'),'(
`id` varchar(40) not null,
`lg_id` varchar(40) not null comment "日誌id",
`column_id` varchar(40) default null comment "欄位id",
`column_name` varchar(40) default null comment "欄位名稱",
`before_value` varchar(1000) default null comment "修改前的值",
`after_value` varchar(1000) default null comment "修改後的值",
`op_cntt` varchar(1000) default null comment "操作內容",
`cmos_modify_time` datetime default null comment "操作時間",
primary key (`id`)
)engine=innodb default charset=utf8
');prepare sql_create_log_detail from @sql_create_table_log_detail;
execute sql_create_log_detail;
deallocate prepare sql_create_log_detail;
set i=i+1;
end while;
end;
一次性建立12張月表
執行呼叫
drop event if exists eve_create_log_detail;
create event eve_create_log_detail
on schedule every 1 year
starts '2020-03-04 20:12:00' on completion preserve enable
docall pro_create_log_detail();
建立事件以及執行時間,一年一次(開始時間可以自定義)。
測試結果
測試結果。
mysql按月歸檔日誌表
由於日誌表越來越大,資料將近1億,查資料非常慢,因此使用事件每月28日呼叫儲存過程自動建立歸檔表,將上月資料按照create time欄位和id欄位插入歸檔表並刪除原表相應資料。delimiter create definer root localhost procedure clear log b...
mysql建表自動填寫當日時間
列型別 顯示格式 timestamp 14 yyyymmddhhmmss timestamp 12 yymmddhhmmss timestamp 10 yymmddhhmm timestamp 8 yyyymmdd timestamp 6 yymmdd timestamp 4 yymm timest...
mysql建立使用者表 mysql 建庫建表建使用者
1.建立資料庫 create database school 2.使用資料庫 use school 3.建立使用者 create user jame localhost identified by jame 4.授權使用者 注意這裡是用了 哦,可以自己講school也替換成 號 grant sele...