【发布时间】:2017-02-14 09:42:26
【问题描述】:
我在动态创建表名时遇到了一点问题。
例如,
此查询(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,好吧,我试过了,我得到了这个错误
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' datereturn) ( `mid` bigint(17) NOT NULL, `uid` int(11) NOT NULL, `csid' at line 4