我正面臨一個動態創建表名的問題。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 ) –