mysql变量命名_MySQL变量表命名创建

我正在为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 ;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值