我需要有一個表中增加一定的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這實際上是一個傳遞給函數的變量,而不是一個確切的表名?如果可能。
2011-04-14
dr3w