mysql rename table_Mysql: RENAME TABLE IF EXISTS

可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):

问题:

This DROP TABLE IF EXISTS works, too bad that RENAME TABLE IF EXISTS doesn't work.

Can anyone suggest a solution for this query? 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

query: RENAME TABLE IF EXISTS video_top_day TO video_top_day_for_delete

回答1:

I've managed to execute a code that always works and generates no errors when the table doesn't exist: 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;

When you don't want to replace [DATABASE NAME] manually you can use the following variable SELECT DATABASE() INTO @db_name FROM DUAL;

回答2:

First create table IF NOT EXISTS. Then RENAME it, so it will always exist!

Otherwise, rename the table, and if it doesn't exist just handle the error.

It is obvious, but it works.

回答3:

There's no official solution yet. There has been feature request submitted in 2004, never closed

回答4:

create table table2 like table1; insert into table2 select * from table1; drop table table1;

回答5:

If you are familiar with PL/SQL, then you can check for existence of table by querying information_schema.columns and based on this perform rename

回答6:

rename table oldtablename to newtablename

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值