需求:MySQl每月最后一天的晚上00:00:00点 ,将表log_user_audio的名字改为log_user_audio_2013_01_31 ,然后新建一个表log_user_audio
问题:
1:这个怎么写,或者帮我找找,因为我不知道怎么搜 --! 囧囧?
2:这个是用所谓的存储过程实现吗? 我一点不了解数据库除了sql之外的东西,能不能顺便帮忙开导下我?
需求:MySQl每月最后一天的晚上00:00:00点 ,将表log_user_audio的名字改为log_user_audio_2013_01_31 ,然后新建一个表log_user_audio
问题:
1:这个怎么写,或者帮我找找,因为我不知道怎么搜 --! 囧囧?
2:这个是用所谓的存储过程实现吗? 我一点不了解数据库除了sql之外的东西,能不能顺便帮忙开导下我?
[code="java"]create procedure alterTable()
begin
declare yestodayDate varchar(10);
declare lastMonthlastDay varchar(10);
select date_format(date_add(curdate(), interval -1 day),'%Y-%m-%d') into yestodayDate;
select last_day(date_add(curdate(), interval -1 day)) into lastMonthlastDay;
if lastMonthlastDay== yestodayDate then
alter table a rename to concat('log_user_audio_',date_format(date_add(curdate(), interval -1 day),'%Y'),'_',date_format(date_add(curdate(), interval -1 day),'%m'),'_',date_format(date_add(curdate(), interval -1 day),'%d'));
set @STMT := concat(
"create table log_user_audio
(f_user_id varchar(64) not null,
f_user_name varchar(100),
f_time_stamp timestamp,
primary key (f_user_id)
)ENGINE=MyISAM DEFAULT CHARSET=utf8;
");
/*执行创建用户信息表的sql*/
prepare stmt from @STMT;
execute stmt;
end if;
end[/code]
[code="java"]
CREATE EVENT event_alter_table
ON SCHEDULE EVERY 1 HOUR STARTS '2013-04-15 11:30:00' ON COMPLETION PRESERVE ENABLE DO call alterTable()
;;
DELIMITER ;
[/code]