mysql - 在 MySQL 存储过程中使用用户定义变量设置表名

标签 mysql variables procedures user-defined

我想创建一个表,其名称取自用户定义的变量。以下代码似乎不起作用(我在 CREATE TABLE 行附近遇到 MYSQL 语法错误)

提前感谢您的帮助

SET @ratingsNewTableName = CONCAT('ratings_', 'anotherString');

CREATE TABLE IF NOT EXISTS @ratingsNewTableName (
   `id` INT(11) NOT NULL AUTO_INCREMENT,
   `user_id` INT(11) NOT NULL,
   `movie_id` INT(11) NOT NULL,
   `rate` DOUBLE NOT NULL,
   `date` DATE NOT NULL,
   PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

最佳答案

SET @sql := CONCAT('CREATE TABLE IF NOT EXISTS ', @tableName,'( id INT(11) NOT NULL AUTO_INCREMENT, user_id INT(11) NOT NULL, movie_id INT(11) NOT NULL, rate DOUBLE NOT NULL, date DATE NOT NULL, PRIMARY KEY (id) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1' ); 
PREPARE mySt FROM @sql; 
EXECUTE mySt;

关于mysql - 在 MySQL 存储过程中使用用户定义变量设置表名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3211170/

相关文章:

bash - 如何获取用于 SLURM 作业的脚本的原始位置?

python - 如何使用 python 在单个 session 中执行多个命令的子进程中使用变量

sql-server - Doctrine + SQL Server 存储过程

Python 使用 unicode 编码的字符串

javascript - 拆分 href 并将 html 放入变量中

php - Laravel 5.8 尝试从数据库中查询阿拉伯语记录

Delphi - 使用可选 VAR 参数调用过程?

sql - 无法删除程序

mysql - SELECT * 但也使用 CAST()

php - 如何在一行中选择多个表?并插入到?