由于项目需要,刚开始用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)
还有另外一个问题,我是想每个月都创建一次表,但是事件好像执行一次就没有了,应该使用计划吗?
不要这么做,首先用存储过程来动态建表,其次用创建事件 来调度存储过程
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;