DBAtlas · Atlas de operações de banco de dados

Renomear uma tabela / objeto

Oracle

-- Table
ALTER TABLE old_name RENAME TO new_name;
-- or
RENAME old_name TO new_name;
-- Column
ALTER TABLE customer RENAME COLUMN name TO full_name;

RENAME ou ALTER ... RENAME TO é usado para tabelas/views/sequences. Objetos dependentes (views, synonyms) podem ficar inválidos e precisar ser recompilados.

PostgreSQL

ALTER TABLE old_name RENAME TO new_name;
ALTER TABLE customer RENAME COLUMN name TO full_name;
ALTER VIEW old_view RENAME TO new_view;

ALTER ... RENAME TO funciona para a maioria dos tipos de objeto. Referências de chaves estrangeiras e índices são preservadas automaticamente mesmo com a mudança de nome (baseadas em OID).

MySQL

RENAME TABLE old_name TO new_name;
-- or
ALTER TABLE old_name RENAME TO new_name;
-- Column (8.0+)
ALTER TABLE customer RENAME COLUMN name TO full_name;

RENAME TABLE é atômico e pode mover várias tabelas em uma única instrução. Para renomear colunas, use RENAME COLUMN no 8.0+; antes disso, é preciso usar CHANGE e especificar também o tipo.

SQL Server

-- Table
EXEC sp_rename 'dbo.old_name', 'new_name';
-- Column
EXEC sp_rename 'dbo.customer.name', 'full_name', 'COLUMN';

O SQL Server não tem instrução RENAME TABLE; usa-se a procedure de sistema sp_rename. O prefixo de schema é informado no nome da tabela, mas não no novo nome. Views/procedures dependentes devem ser atualizadas manualmente.

MongoDB

// Rename a collection
db.old_name.renameCollection("new_name");
// or the admin command
db.adminCommand({ renameCollection: "db.old_name", to: "db.new_name" });

renameCollection altera o nome da coleção. Para renomear um campo, use o operador $rename com updateMany. Coleções com sharding podem ser renomeadas no 5.0+; versões mais antigas não suportam.

Redis

# Rename a key
RENAME old_key new_key
# Without overwriting if the target exists
RENAMENX old_key new_key

RENAME renomeia a chave; se o destino já existir, é sobrescrito. RENAMENX funciona apenas se o destino não existir. Retorna erro se a chave de origem não existir.

Elasticsearch

# An index cannot be renamed directly; reindex + alias approach
POST _reindex
{ "source": { "index": "old_name" }, "dest": { "index": "new_name" } }
DELETE old_name
# or use an alias for a seamless switch
POST _aliases
{ "actions": [ { "add": { "index": "new_name", "alias": "customer" } } ] }

Não há comando para renomear índices. Faça reindex para o novo nome com _reindex e exclua o antigo. Recomenda-se operar atrás de um alias estável, para manter a aplicação independente dos nomes dos índices.

Abrir no DBAtlas →