考虑:
SET @PREFIX='DEV_';
SET @REFRESHDB=CONCAT(@PREFIX,'Refresh');
CREATE TABLE @REFRESHDB.`Metadata`
(
`Key` VARCHAR(30) NOT NULL,
`Value` VARCHAR(30) NOT NULL,
PRIMARY KEY (`Key`)
) ENGINE = InnoDB;
INSERT INTO @REFRESDB.`Metadata` (`Key`, `Value`) VALUES ("Version", "0");
Run Code Online (Sandbox Code Playgroud)
这似乎没有效果:mysql回来了:
您的SQL语法有错误; 检查与MySQL服务器版本对应的手册,以便在'@REFRESHDB .Metadata`附近使用正确的语法
据我所知,根据文档,我已经完成了正确的事情.然而MySQL表示不允许这样做.这是MySQL的一些限制(不允许使用变量作为标识符)或其他什么?
您将不得不使用prepare语句/动态SQL来执行此操作.
本文详细介绍了这两个方面:
http://rpbouman.blogspot.com/2005/11/mysql-5-prepared-statement-syntax-and.html
试试这个:
SET @PREFIX='DEV_';
SET @REFRESHDB=CONCAT(@PREFIX,'Refresh');
SET @st = CONCAT('CREATE TABLE ', @REFRESHDB,'.`Metadata`
(
`Key` VARCHAR(30) NOT NULL,
`Value` VARCHAR(30) NOT NULL,
PRIMARY KEY (`Key`)
) ENGINE = InnoDB');
PREPARE tStmt FROM @s;
EXECUTE tStmt;
SET @s = CONCAT('INSERT INTO ', @PREFIX, '.`Metadata` (`Key`, `Value`) VALUES ("Version", "0")');
PREPARE stmt FROM @s;
EXECUTE stmt;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3390 次 |
| 最近记录: |