我正面临一个动态创建表名的问题。MYSQL存储过程从日期创建动态表
例如, 该查询返回(SELECT DATE_FORMAT(NOW(),'%Y%m'))
201702
我的动机是检查表是否存在。 如果它不存在,它会自动创建它。 现在,这是我的问题。
messages_`,datereturn
看来我得到错误甚至编译。我们如何传递参数来创建表格?
非常感谢您的帮助。
全码:
BEGIN
SET datereturn = (SELECT DATE_FORMAT(NOW(),'%Y%m'));
CREATE TABLE IF NOT EXISTS `messages_`,datereturn (
`mid` bigint(17) NOT NULL,
`uid` int(11) NOT NULL,
`csid` int(11) NOT NULL,
`content` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
`content_type` tinyint(4) NOT NULL,
`datecreated` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`datecreated1` bigint(13) DEFAULT NULL,
PRIMARY KEY (`mid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
END
编辑:它不同于提出的答案。 我使用MySQL 5.6动态表。 以上建议的线程不适用于我的版本。 所以,我不知道为什么这是可能的重复。
您是不是要找'CONCAT( “messages_”,datereturn)'? –
@ PM77-1,那么,我试过,我得到这个错误'''你的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以便在'datereturn'附近使用正确的语法('mid' bigint(17)NOT NULL,'uid' int(11)NOT NULL,'csid'at line 4''' – FreedomPride
[mysql(5.1)>使用变量名称创建表的可能的副本](http://stackoverflow.com/questions/7489142/mysql-5-1-create-table-with-name-from-a-variable ) –