Sintaxe RENAME TABLE
A renomeação é feita automicamente, o que significa que nenhuma outra thread pode acessar qualquer uma das tabelas enquanto a renomeação está sendo exectuda. Isto torna possível substituir uma tabela por uma tabela vazia:
CREATE TABLE tabela_nova (...); RENAME TABLE tabela_antiga TO tabela_backup, tabela_nova TO tabela_antiga;
A renomeação é feita da esquera para a direita, o que significa que se você quiser trocar os nomes das tabelas, você deve fazer:
RENAME TABLE tabela_antiga TO tabela_backup, tabela_nova TO tabela_antiga, tabela_backup TO tabela_nova;
Desde que dois banco de dados estejam no mesmo disco você pode renomear de um banco de dados para outro:
RENAME TABLE bd_atual.nome_tabela TO outro_bd.nome_tabela;
Quando você executa RENAME
, você não pode ter nenhuma tabela bloqueada ou transações ativas. Você também deve ter o privilégio ALTER
e DROP
na tabela original e o privilégio CREATE
e INSERT
na nova tabela.
Se o MariaDB encontrar qualquer erro uma renomeação multi-tabela, ele fará um renomeação reversa para todas a tabelas renomeadas para retornar tudo ao estado original.
RENAME TABLE
foi adicionado no MariaDB 3.23.23.