0
我需要有一個表中增加一定的ID(如AUTO_INCREMENT)函數使用MySQL函數變量作爲表名查詢
我有水木清華這樣
DELIMITER $$ DROP FUNCTION IF EXISTS `GetNextID`$$ CREATE FUNCTION `GetNextID`(tblName TEXT, increment INT) RETURNS INT DETERMINISTIC BEGIN DECLARE NextID INT; SELECT MAX(concat(tblName, 'ID')) + increment INTO NextID FROM concat('table_', tblName); ## SELECT MAX(articleID) + increment INTO NextID FROM table_article; RETURN NextID; END$$ DELIMITER ; INSERT INTO `table_article` (articleID, articleAlias) VALUES (GetNextID('article', 5), 'TEST');
所以我通過兩個變量:tblName(不含table_
前綴)和增量編號。註釋行 - SELECT函數本身內部的查詢 - 效果很好,但我想動態地將表名稱傳遞給函數,因此從某個表的某個列中獲取數據。我究竟做錯了什麼?
的錯誤是:
#1064 - 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 '('table_', tblName); RETURN NextID; END' at line 6
,如果我只是試圖以這樣的方式
SELECT MAX(articleID) + increment INTO NextID FROM tblName;
的錯誤報告tblName不存在選擇最大值。我如何告訴MySql這實際上是一個傳遞給函數的變量,而不是一個確切的表名?如果可能。