gpt4 book ai didi

mysql - 如何根据变量选择架构?

转载 作者:IT王子 更新时间:2023-10-29 00:27:54 25 4
gpt4 key购买 nike

考虑:

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");

这似乎无效:mysql 回来了:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@REFRESHDB.`Metadata`

据我所知,我根据 the documentation 所做的事情是正确的.然而 MySQL 说这是不允许的。这是 MySQL 的一些限制(不允许使用变量作为标识符)还是其他什么?

最佳答案

您必须使用准备语句/动态 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;

关于mysql - 如何根据变量选择架构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7612693/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com