Spec-Zone .ru
спецификации, руководства, описания, API

13.1.32. RENAME TABLE Синтаксис

RENAME TABLE tbl_name TO new_tbl_name    [, tbl_name2 TO new_tbl_name2] ...

Этот оператор переименовывает одну или более таблиц.

Переименовать работа делается атомарно, что означает, что никакой другой сеанс не может получить доступ ни к одной из таблиц, в то время как переименовывание работает. Например, если у Вас есть существующая таблица old_table, можно составить другую таблицу new_table это имеет ту же самую структуру, но пусто, и затем замените существующую таблицу пустым следующим образом (принимающий это backup_table уже не существует):

CREATE TABLE new_table (...);RENAME TABLE old_table TO backup_table, new_table TO old_table;

Если оператор переименовывает больше чем одну таблицу, переименовывающие операции делаются слева направо. Если Вы хотите подкачать два имен таблиц, можно сделать так как это (принимающий, что tmp_table уже не существует):

RENAME TABLE old_table TO tmp_table,             new_table TO old_table,             tmp_table TO new_table;

Целых две базы данных находятся на той же самой файловой системе, можно использовать RENAME TABLE перемещать таблицу от одной базы данных до другого:

RENAME TABLE current_db.tbl_name TO other_db.tbl_name;

Если есть какие-либо триггеры, связанные с таблицей, которая перемещается в различное использование базы данных RENAME TABLE, тогда оператор перестал работать с ошибочным Триггером в неправильной схеме.

RENAME TABLE также работы для представлений, пока Вы не пытаетесь переименовать представление в различную базу данных.

Любые полномочия, предоставленные определенно для переименованной таблицы или представления, не перемещаются на новое имя. Они должны быть изменены вручную.

Когда Вы выполняетесь RENAME, у Вас не может быть никаких заблокированных таблиц или активных транзакций. Вы должны также иметь ALTER и DROP полномочия на исходной таблице, и CREATE и INSERT полномочия на новой таблице.

Если MySQL встречается, любые ошибки в многократной таблице переименовывают, он делает реверс, переименовывают для всех переименованных таблиц, чтобы возвратить все его исходному состоянию.

Невозможно использовать RENAME переименовать a TEMPORARY таблица. Однако, можно использовать ALTER TABLE вместо этого:

mysql> ALTER TABLE orig_name RENAME new_name;