2013-09-19 4 views
3

Чтобы переименовать любую таблицу в SQL мы используем следующую команду:Как работает оператор RENAME?

RENAME OldTableName TO NewTableName 

Как это работает внутри?

Мое предположение, что, вероятно, сначала создает таблицу с помощью NewTableName AS SELECT, а затем удаляет старый стол с DROP, так же, как мы делали, когда переименование файлов при работе с файлами в C. Правильно ли я, или он работает по-другому?

+0

Почему на удержании? Может ли кто-нибудь PLZ помочь мне, как преодолеть это –

ответ

2

Вы можете получить некоторую помощь от here: -

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

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

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

5

Это работает по-разному. Данные не копируются. Имя таблицы просто обновляется в таблицах метаданных - наряду со ссылками на такие вещи, как триггеры и т. Д.

Смежные вопросы