首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用MySQL过程更改表的名称

使用MySQL过程更改表的名称
EN

Stack Overflow用户
提问于 2020-09-04 21:00:37
回答 1查看 28关注 0票数 0

我正在尝试创建一个存储过程来更改现有表的名称,方法是将日期附加到表中。

我使用MySQL的时间很短,不明白为什么代码不能工作。我正在使用MySQL Workbench 8.0社区连接到MySQL数据库并运行代码。在Workbench中,当我运行代码时不会返回任何错误。

到目前为止,我设法找到的代码是:

代码语言:javascript
运行
复制
DELIMITER \\

DROP PROCEDURE IF EXISTS `usp_test_dynamic_sql`\\
CREATE PROCEDURE `usp_test_dynamic_sql`()

BEGIN

SET @s = concat('ALTER TABLE MyDashboardTable RENAME TO MyDashboardTable_',replace(date(now()),'-',''));

PREPARE stmt1 FROM @s;
EXECUTE stmt1;

END\\

DELIMITER ;

我已经运行了部分代码,通过运行以下命令来查看@s被设置为什么:

代码语言:javascript
运行
复制
SET @s = concat('ALTER TABLE MyDashboardTable RENAME TO MyDashboardTable_',replace(date(now()),'-',''));
select @s;

然后,我粘贴了@s的结果

代码语言:javascript
运行
复制
ALTER TABLE MyDashboardTable RENAME TO MyDashboardTable_20200904

这确实会改变表的名称,但是我不明白为什么存储过程不会改变。任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2020-09-04 23:20:20

以下列身份执行SP

代码语言:javascript
运行
复制
CALL usp_test_dynamic_sql();

您可能还想修改您的

代码语言:javascript
运行
复制
replace(date(now()),'-','')

使用

代码语言:javascript
运行
复制
DATE_FORMAT(NOW(),'%Y%m%d')

即使这不是绝对必要的。如果这样做,请不要在格式之间保留空格或使用'-‘或'/’,因为MySQL会抛出错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63741719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档