Spec-Zone .ru
спецификации, руководства, описания, API
|
RENAME TABLEtbl_name
TOnew_tbl_name
[,tbl_name2
TOnew_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 TABLEcurrent_db.tbl_name
TOother_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;