我正在尝试使用定义为@var:
的常量前缀重命名表列表SET @p='newprefix_';
RENAME TABLE `oldprefix_tablename1` TO CONCAT(@p, 'tablename1');
RENAME TABLE `oldprefix_tablename2` TO CONCAT(@p, 'tablename2');
这种语法错了,但我明白了:
SELECT CONCAT(@p, 'tablename'); //outputs newprefix_tablename
这里使用的正确方法/语法是什么?
答案 0 :(得分:2)
你无法直接按照自己的方式去做。正如手册所说(http://dev.mysql.com/doc/refman/5.1/en/user-variables.html)
用户变量旨在提供数据值。他们不可能 直接在SQL语句中用作标识符或作为其一部分 标识符,例如在表或数据库名称所在的上下文中 预期的,或作为SELECT等保留字。
你必须使用准备好的陈述:
SET @p = 'newprefix_';
SET @s = CONCAT('RENAME TABLE `oldprefix_tablename1` to ', @p, 'tablename1');
PREPARE stmt FROM @s;
EXECUTE stmt;