Mysql: RENAME TABLE IF EXISTS - программирование
Подтвердить что ты не робот

Mysql: RENAME TABLE IF EXISTS

Этот DROP TABLE IF EXISTS работает слишком плохо, что RENAME TABLE IF EXISTS не работает.

Может ли кто-нибудь предложить решение для этого запроса?

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

запрос:

RENAME TABLE IF EXISTS video_top_day TO video_top_day_for_delete
4b9b3361

Ответ 1

Мне удалось выполнить код, который всегда работает и не генерирует ошибок, если таблица не существует:

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] вручную, вы можете использовать следующую переменную

SELECT DATABASE() INTO @db_name FROM DUAL;

Ответ 2

Официального решения пока нет. Был запрос функции, представленный в 2004 году, никогда не закрывался

Ответ 3

Сначала создайте таблицу IF NOT EXISTS. Тогда RENAME он, поэтому он всегда будет существовать!

В противном случае переименуйте таблицу, и если она не существует, просто обработайте ошибку.

Это очевидно, но оно работает.

Ответ 4

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

Ответ 5

Если вы знакомы с PL/SQL, то вы можете проверить наличие таблицы, запросив информацию в файле history_schema.columns и на основе этого выполните переименование

Ответ 6

переименовать таблицу oldtablename в newtablename