Mysql: RENAME TABLE IF EXISTS

匿名 (未验证) 提交于 2019-12-03 01:45:01

问题:

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



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!