我需要一个增加表中特定ID的函数(例如auto_increment)

我有这样的东西

分隔符$$

如果存在`GetNextID` $$,则使用DROP功能

创建函数`GetNextID`(tblName TEXT,增量INT)
返回整数
确定性
    开始
        声明NextID INT;
        SELECT MAX(concat(tblName,'ID'))+从concat('table_',tblName)增量到NextID
        ## SELECT MAX(articleID)+从table_article递增INTO NextID;
        返回NextID;
    END $$

定界符;

INSERT INTO`table_article`(articleID,articleAlias)值(GetNextID('article',5),'TEST');


因此,我传递了两个变量:tblName(不带table_前缀)和增量号。带注释的行-函数本身内部的SELECT查询-效果很好,但是我想动态地将表名传递给函数,以便从某些表的某个col获得数据。我究竟做错了什么?

错误是:

#1064-您的SQL语法有误;检查与您的MySQL服务器版本相对应的手册,以在'(''table_',tblName)附近使用正确的语法;
返回NextID;
在第6行结束


如果我只是尝试以这种方式选择最大值

SELECT MAX(articleID)+从tblName到INTO NextID的增量;


该错误报告tblName不存在。我怎样才能告诉MySql这实际上是传递给函数的var,而不是确切的表名?如果可能的话。

最佳答案

你需要类似的东西

prepare stmp from concat('SELECT MAX(ID) + ', increment, ' INTO NextID FROM table_', tblName);
execute stmp;
deallocate prepare stmp;

关于mysql - 在查询中使用MySql函数变量作为表名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5663387/

10-10 11:47