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
Ответы
Ответ 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