我正在编写一个SQL脚本来重命名MySQL数据库中的许多表。我想将前缀更改为新值。我使用的代码如下所示。可以在"重命名表"中使用变量。命令?
感谢。
set @oldTable = 'j5xqy_banner_clients';
set @newTable = 'p5gsk_banner_clients';
rename table @oldTable to @newTable
答案 0 :(得分:2)
您可以这样做,但您需要使用预先准备好的声明:
SET @oldTable = 'a_b';
SET @newtable = 'b_b';
SET @sql = CONCAT('RENAME TABLE ', @oldTable, ' TO ', @newtable);
PREPARE stmt1 FROM @sql;
EXECUTE stmt1;
答案 1 :(得分:1)
记住规则的好方法:
变量和参数只能在SQL中使用,否则您将使用单个常量值,而不是使用标识符(列名,表名等)或SQL的位置关键字或表达式。
在解析之前,SQL语法中所需的任何动态内容都必须在之前。这就是为什么它如果你创建一个字符串,然后准备/执行它的原因,如@sgeddes的答案所示。