DBAtlas · Atlas d'exploitation des bases de données

Renommer une table / un objet

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 s'utilise pour les tables/vues/séquences. Les objets dépendants (vues, synonymes) peuvent devenir invalides et doivent être recompilés.

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 fonctionne pour la plupart des types d'objets. Les références des clés étrangères et des index sont conservées automatiquement même après changement de nom (basé sur l'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 est atomique et peut déplacer plusieurs tables en une seule instruction. Pour renommer des colonnes, utilisez RENAME COLUMN en 8.0+ ; auparavant, il faut utiliser CHANGE en précisant aussi le type.

SQL Server

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

SQL Server n'a pas d'instruction RENAME TABLE ; on utilise la procédure système sp_rename. Le préfixe de schéma figure dans le nom de la table mais pas dans le nouveau nom. Les vues/procédures dépendantes doivent être mises à jour manuellement.

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 change le nom de la collection. Pour renommer un champ, utilisez l'opérateur $rename avec updateMany. Les collections shardées peuvent être renommées en 5.0+ ; les versions plus anciennes ne le permettent pas.

Redis

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

RENAME renomme la clé ; si la cible existe déjà, elle est écrasée. RENAMENX ne fonctionne que si la cible n'existe pas. Une erreur est renvoyée si la clé source n'existe pas.

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" } } ] }

Il n'existe pas de commande pour renommer un index. Réindexez vers le nouveau nom avec _reindex et supprimez l'ancien. Il est recommandé de passer par un alias stable pour que l'application ne dépende pas des noms d'index.

Ouvrir dans DBAtlas →