Cette page explique comment renommer des tables et comment ajouter, utiliser et supprimer des synonymes de tables.
Options de changement de nom et de synonymes des tables
Vous pouvez utiliser l'instruction ALTER TABLE
pour effectuer les opérations suivantes:
- Renommer une table et remplacer l'ancien nom par un synonyme
- Échanger les noms de tables
- Renommer une seule table
- Créez une table avec un seul synonyme.
- Ajouter un seul synonyme à une table sans la renommer
Fonctionnement du changement de nom d'une table à l'aide de synonymes
Un scénario courant consiste à renommer une table et à ajouter un synonyme contenant l'ancien nom de la table. Après avoir renommé la table, vous pouvez mettre à jour les applications pour qu'elles utilisent le nouveau nom selon votre programmation. Au cours de cette période, il est possible que certaines applications utilisent l'ancien nom et d'autres le nouveau.
Une fois que vous avez mis à jour toutes vos applications pour utiliser le nouveau nom, nous vous recommandons de supprimer le synonyme. Bien qu'un synonyme n'ait aucune incidence sur les performances, vous ne pouvez pas utiliser l'ancien nom ailleurs tant qu'il n'a pas été supprimé.
Les synonymes sont stockés dans le schéma en tant qu'objet synonym
. Vous ne pouvez avoir qu'un seul synonyme par table.
Pour en savoir plus, consultez Renommer une table et ajouter un synonyme.
Fonctionnement du changement de nom de table
Lorsque vous devez échanger des noms entre deux tables, vous pouvez chaîner des instructions RENAME TO
pour renommer deux tables de la même instruction. Cela vous permet d'associer des applications à une autre table sans interruption.
Pour en savoir plus, consultez Intervertir les noms de tables.
Fonctionnement du changement de nom d'une table
Lorsque vous renommez une table, Spanner modifie son nom dans son schéma. Le fait de renommer une table entrelace toutes les tables enfants avec le nouveau nom de la table. Le changement de nom de la table modifie également les références à la table pour les éléments suivants:
- Index
- Clés étrangères
- Modifier les flux
- Contrôle ultraprécis des accès
Spanner ne met pas automatiquement à jour les vues pour qu'elles utilisent le nouveau nom de table.
Pour en savoir plus, consultez Renommer une table.
Limites concernant le changement de nom des tables
Le changement de nom d'une table présente les limites suivantes:
- Vous ne pouvez pas renommer une table en utilisant le nom d'une colonne de cette table si celle-ci est entrelacée dans une autre table.
- Si la table dispose d'une vue, vous pouvez supprimer cette vue et la recréer après avoir renommé la table.
Fonctionnement des synonymes
Vous pouvez créer une table avec un synonyme ou modifier une table pour y ajouter un synonyme sans la renommer. Cela peut se produire si vous souhaitez utiliser une base de données à la fois pour un environnement de production et un environnement de test.
Pour en savoir plus, consultez Ajouter un synonyme à une table.
Autorisations
Pour renommer une table ou ajouter un synonyme à une table, vous devez disposer de l'autorisation spanner.databases.updateDdl
. Pour vérifier ou modifier vos autorisations, consultez Accorder des autorisations aux principes.
Renommer un tableau et ajouter un synonyme
GoogleSQL
Utilisez ALTER TABLE RENAME TO ADD SYNONYM
pour renommer une table et ajouter un synonyme.
ALTER TABLE table_name RENAME TO new_table_name, ADD SYNONYM table_name;
PostgreSQL
Utilisez ALTER TABLE RENAME WITH ADD SYNONYM
pour renommer une table et ajouter un synonyme.
ALTER TABLE table_name RENAME WITH SYNONYM TO new_table_name;
L'exemple suivant montre comment renommer une table et ajouter un synonyme. Par exemple, si vous créez une table avec le LDD suivant:
GoogleSQL
CREATE TABLE Singers (
SingerId INT64 NOT NULL,
SingerName STRING(1024)
), PRIMARY KEY (SingerId);
PostgreSQL
CREATE TABLE singers (
singer_id BIGINT,
singer_name VARCHAR(1024),
PRIMARY KEY (singer_id));
Vous pouvez effectuer la requête LDD suivante pour renommer la table et déplacer le nom existant vers l'objet synonym
.
GoogleSQL
ALTER TABLE Singers RENAME TO SingersNew, ADD SYNONYM Singers;
PostgreSQL
ALTER TABLE singers RENAME WITH SYNONYM TO singers_new;
Intervertir les noms des tables
L'instruction LDD suivante modifie les noms de plusieurs tables de manière atomique. Cela est utile lors du permutation des noms entre une ou plusieurs paires de tables.
GoogleSQL
Utilisez RENAME TABLE
.
RENAME TABLE old_name1 TO new_name1 [,old_name2 TO new_name2 ...];
PostgreSQL
Utilisez ALTER TABLE RENAME TO
.
ALTER TABLE [ IF EXISTS ] [ ONLY ] table_name1
RENAME TO new_table_name1
[, ALTER TABLE [ IF EXISTS ] [ ONLY ] table_name2
RENAME TO new_table_name2 ...];
L'exemple suivant montre comment échanger les noms de deux tables. Cela nécessite que la première table soit renommée avec un nom temporaire, que la deuxième table soit renommée le nom de la première table, puis que la première table soit renommée sous le nom de la deuxième table.
Si vous avez créé deux tables comme suit:
GoogleSQL
CREATE TABLE Singers (
SingerId INT64 NOT NULL,
SingerName STRING(1024)
), PRIMARY KEY (SingerId);
CREATE TABLE SingersNew (
SingerId INT64 NOT NULL,
FirstName STRING(1024),
MiddleName STRING(1024),
LastName STRING(1024)
), PRIMARY KEY (SingerId);
PostgreSQL
CREATE TABLE singers (
singer_id BIGINT,
singer_name VARCHAR(1024),
PRIMARY KEY (singer_id)
);
CREATE TABLE singers_new (
singer_id BIGINT,
first_name VARCHAR(1024),
middle_name VARCHAR(1024),
last_name VARCHAR(1024)
PRIMARY KEY (singer_id)
);
Vous pouvez utiliser la requête LDD suivante pour échanger les noms des tables:
GoogleSQL
RENAME TABLE Singers TO Temp, SingersNew TO Singers, Temp TO SingersNew;
PostgreSQL
ALTER TABLE singers RENAME TO temp,
ALTER TABLE singers_new RENAME TO singers,
ALTER TABLE temp RENAME TO singers_new;
Une fois l'instruction LDD appliquée, les noms de table sont échangés:
GoogleSQL
CREATE TABLE Singers (
SingerId INT64 NOT NULL,
FirstName STRING(1024),
MiddleName STRING(1024),
LastName STRING(1024)
), PRIMARY KEY (SingerId);
CREATE TABLE SingersNew (
SingerId INT64 NOT NULL,
SingerName STRING(1024)
), PRIMARY KEY (SingerId);
PostgreSQL
CREATE TABLE singers (
singer_id BIGINT,
first_name VARCHAR(1024),
middle_name VARCHAR(1024),
last_name VARCHAR(1024)
PRIMARY KEY (singer_id)
);
CREATE TABLE singers_new (
singer_id BIGINT,
singer_name VARCHAR(1024),
PRIMARY KEY (singer_id)
);
Renommer une table
Pour renommer une table, utilisez la syntaxe suivante:
GoogleSQL
Utilisez l'instruction ALTER NAME
ou RENAME TABLE
.
ALTER TABLE table_name RENAME TO new_table_name;
RENAME TABLE table_name TO new_table_name;
PostgreSQL
Utilisez l'instruction ALTER TABLE RENAME TO
.
ALTER TABLE [ IF EXISTS ] [ ONLY ] table_name
RENAME TO new_table_name;
L'exemple suivant montre une requête LDD qui renomme la table:
GoogleSQL
RENAME TABLE Singers TO SingersNew;
PostgreSQL
ALTER TABLE singers RENAME TO singers_new;
Ajouter un synonyme à un tableau
Pour ajouter un synonyme à un tableau:
GoogleSQL
ALTER TABLE table_name ADD SYNONYM synonym;
PostgreSQL
ALTER TABLE [ IF EXISTS ] [ ONLY ] table_name ADD SYNONYM synonym;
L'exemple suivant montre une requête LDD qui ajoute un synonyme à la table:
GoogleSQL
ALTER TABLE Singers ADD SYNONYM SingersTest;
PostgreSQL
ALTER TABLE singers ADD SYNONYM singers_test;
Créer une table avec un synonyme
Pour créer une table avec un synonyme:
GoogleSQL
Utilisez CREATE TABLE SYNONYM synonym_name
.
CREATE TABLE table_name (
...
SYNONYM (synonym)
) PRIMARY KEY (primary_key);
PostgreSQL
Utilisez CREATE TABLE SYNONYM synonym_name
.
CREATE TABLE table_name (
...
SYNONYM (synonym),
PRIMARY KEY (primary_key));
L'exemple suivant crée une table et ajoute un synonyme.
GoogleSQL
# The table's name is Singers and the synonym is Artists.
CREATE TABLE Singers (
SingerId INT64 NOT NULL,
SingerName STRING(1024),
SYNONYM (Artists)
) PRIMARY KEY (SingerId);
PostgreSQL
# The table's name is singers and the synonym is artists.
CREATE TABLE singers (
singer_id BIGINT,
singer_name VARCHAR(1024),
SYNONYM (artists),
PRIMARY KEY (singer_id));
Supprimer un synonyme d'un tableau
GoogleSQL
Utilisez ALTER TABLE DROP SYNONYM pour supprimer le synonyme de la table.
ALTER TABLE table_name DROP SYNONYM synonym;
PostgreSQL
Utilisez ALTER TABLE DROP SYNONYM pour supprimer le synonyme de la table.
ALTER TABLE [ IF EXISTS ] [ ONLY ] table_name DROP SYNONYM synonym;
L'exemple suivant montre une requête LDD qui supprime le synonyme de la table:
GoogleSQL
ALTER TABLE Singers DROP SYNONYM SingersTest;
PostgreSQL
ALTER TABLE singers DROP SYNONYM singers_test;