首页 新闻 会员 周边

mysql的动态表名

0
悬赏园豆:30 [已解决问题] 解决于 2015-01-21 14:58

由于项目需要,刚开始用mysql,在创建事件的时候想使用动态表名,结果总是报错。代码如下

create EVENT createMtpulseTable
ON SCHEDULE AT DATE_FORMAT(CURRENT_DATE(),'%Y-%m-%d 14:07:00')
DO
create table CONCAT('mtpulse',DATE_FORMAT(CURRENT_DATE(),'%Y%m'))(id INT not NULL PRIMARY KEY auto_increment)

还有另外一个问题,我是想每个月都创建一次表,但是事件好像执行一次就没有了,应该使用计划吗?

问题补充:

怎么都没人回答呢?

小小鸟努力飞翔的主页 小小鸟努力飞翔 | 初学一级 | 园豆:34
提问于:2015-01-19 14:14
< >
分享
最佳答案
0

不要这么做,首先用存储过程来动态建表,其次用创建事件 来调度存储过程

create EVENT createMtpulseTable
ON SCHEDULE every 1 month 
STARTS CURRENT_TIMESTAMP
DO
CALL pro_createTable();

CREATE PROCEDURE pro_createTable()
BEGIN
DECLARE str VARCHAR(500);
-- set @str='create table';
set str= CONCAT('create table mtpulse',DATE_FORMAT(CURRENT_DATE(),'%Y%m'),'(id INT not NULL  auto_increment,PRIMARY KEY(id))');
SET @sqlstr=str;
PREPARE stmt from @sqlstr;
EXECUTE stmt;
deallocate prepare stmt;
END;
收获园豆:30
葱油饼 | 初学一级 |园豆:186 | 2015-01-21 14:55
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册