首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Mysql:如果存在则重命名表

Mysql:如果存在则重命名表
EN

Stack Overflow用户
提问于 2012-02-14 23:31:51
回答 9查看 35.3K关注 0票数 22

这个DROP TABLE IF EXISTS可以工作,但RENAME TABLE IF EXISTS不能工作,这太糟糕了。

有人能为这个问题提供解决方案吗?

代码语言:javascript
运行
复制
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 'IF EXISTS video_top_day TO video_top_day_for_delete' at line 1

查询:

代码语言:javascript
运行
复制
RENAME TABLE IF EXISTS video_top_day TO video_top_day_for_delete
EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2012-02-14 23:52:30

我已经成功地执行了一段代码,该代码在表不存在时始终有效且不会产生错误:

代码语言:javascript
运行
复制
SELECT Count(*)
INTO @exists
FROM information_schema.tables 
WHERE table_schema = [DATABASE_NAME]
    AND table_type = 'BASE TABLE'
    AND table_name = 'video_top_day';

SET @query = If(@exists>0,
    'RENAME TABLE video_top_day TO video_top_day_for_delete',
    'SELECT \'nothing to rename\' status');

PREPARE stmt FROM @query;

EXECUTE stmt;

当您不想手动替换[DATABASE NAME]时,可以使用以下变量

代码语言:javascript
运行
复制
SELECT DATABASE() INTO @db_name FROM DUAL;
票数 33
EN

Stack Overflow用户

发布于 2012-02-14 23:34:40

首先创建表IF NOT EXISTS。然后RENAME它,所以它将永远存在!

否则,重命名该表,如果该表不存在,则处理该错误。

这是显而易见的,但它是有效的。

票数 11
EN

Stack Overflow用户

发布于 2012-02-14 23:33:46

目前还没有正式的解决方案。已经有feature request在2004年提交,从未关闭

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

https://stackoverflow.com/questions/9279619

复制
相关文章

相似问题

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