gpt4 book ai didi

MySQL变量表命名创建

转载 作者:可可西里 更新时间:2023-11-01 07:37:36 24 4
gpt4 key购买 nike

我正在为 minecraft 的服务器集合创建一个数据库,按照我的设置方式,我希望在添加每个服务器时为其创建一个表。目前,除了我无法获取正在创建的包含 IP 地址的表之外,我一切正常。我希望表格类似于 [IP]_Players,其中 [IP] 被实际 IP 地址替换,它将通过创建它的函数发送。这是我目前所拥有的:

DELIMITER $$

CREATE PROCEDURE `minecraft`.`AddServer` (ip Text)
BEGIN
DECLARE play TEXT;
DECLARE tran TEXT;
SET play = ip + '_Players';
SET tran = ip + '_Transactions';
INSERT INTO `minecraft`.`Server_Data` (`Server_IP`) VALUES (ip);
CREATE TABLE `minecraft`.play (
`Player` TEXT NOT NULL ,
`Balance` DOUBLE NOT NULL DEFAULT 100 ,
`Warnings` INT NOT NULL DEFAULT 0 ,
`Offences` INT NOT NULL DEFAULT 0 ,
UNIQUE INDEX `Player_UNIQUE` (`Player` ASC) );
CREATE TABLE `minecraft`.tran (
`Time` TIMESTAMP NOT NULL ,
`Player` TEXT NOT NULL ,
`Destination` TEXT NOT NULL ,
`Amount` DOUBLE NOT NULL ,
`Description` TEXT NOT NULL ,
PRIMARY KEY (`Time`) );
END

而不是将其创建为 192.168.001.107_Players 时CALL minecraft.AddServer('192.168.001.107');已执行,它会创建一个名为 play 的表。我做错了什么?

最佳答案

我一直在玩弄它,让它工作。请注意,表名中不能有句点。因此,您可能希望使用 REPLACE 函数将句点替换为下划线等。

DELIMITER $$

CREATE PROCEDURE `minecraft`.`AddServer` (ip Text)
BEGIN
DECLARE play varchar(500);
DECLARE STMT varchar(500);
SET play = CONCAT(ip, '_Players');
SET @sql_stmt = CONCAT('CREATE TABLE minecraft.', play, ' (
`Player` VARCHAR(50) NOT NULL ,
`Balance` DOUBLE NOT NULL DEFAULT 100 ,
`Warnings` INT NOT NULL DEFAULT 0 ,
`Offences` INT NOT NULL DEFAULT 0 ,
UNIQUE INDEX `Player_UNIQUE` (`Player` ASC) );');
PREPARE STMT FROM @sql_stmt;
EXECUTE STMT;
END$$

Delimiter ;

关于MySQL变量表命名创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13188228/

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