Мне нужна функция, которая увеличивает определенный идентификатор в таблице (например, auto_increment)
У меня есть что-то подобное
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, что это фактически переменная, переданная функции, а не точное имя таблицы? Если это возможно.