我需要一个增加表中特定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/