6.5.5 Синтаксис оператора RENAME TABL
E
RENAME TABLE tbl_name TO new_tbl_name[, tbl_name2 TO new_tbl_name2,...]
Операция переименования должна осуществляться как атомарная, т.е. при
выполнении переименования никакому другому потоку не разрешается доступ к
указанным таблицам. Благодаря этому возможно замещение таблицы пустой
таблицей:
CREATE TABLE new_table (...);
RENAME TABLE old_table TO backup_table, new_table TO old_table;
Переименование производится слева направо. Таким образом, для обмена
именами между двумя таблицами необходимо выполнить следующие действия:
RENAME TABLE old_table TO backup_table,
new_table TO old_table,
backup_table TO new_table;
Для двух баз данных, находящихся на одном и том же диске, можно также
осуществлять обмен именами:
RENAME TABLE current_db.tbl_name TO other_db.tbl_name;
При выполнении команды RENAME
не должны иметь место заблокированные
таблицы или активные транзакции. Необходимо также иметь привилегии ALTER
и
DROP
для исходной таблицы и привилегии CREATE
и INSERT
- для новой.
Если MySQL сталкивается с какой-либо ошибкой при переименовании нескольких
таблиц, то произойдет обратное переименование для всех переименованных
таблиц, чтобы вернуть все в исходное состояние.
Оператор RENAME TABLE
был добавлен в MySQL 3.23.23.