Cette page explique comment renommer des tables, et comment ajouter, utiliser et supprimer des synonymes de table dans des bases de données au dialecte GoogleSQL et au dialecte PostgreSQL.
Options de changement de nom des tables et de synonymes
Vous pouvez utiliser l'instruction ALTER TABLE
pour effectuer les opérations suivantes:
- Renommez une table et ajoutez l'ancien nom à un synonyme.
- Inverser les noms des tables :
- Renommer une seule table
- Créez un tableau avec un seul synonyme.
- Ajoutez un seul synonyme à une table sans la renommer.
Fonctionnement du renommage de tables avec des synonymes
Un scénario courant consiste à renommer une table et à ajouter un synonyme contenant l'ancien nom de la table. Une fois la table renommée, vous pouvez mettre à jour les applications pour qu'elles utilisent le nouveau nom selon votre calendrier. Pendant 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 qu'elles utilisent le nouveau nom, nous vous recommandons de supprimer le synonyme. Bien que l'utilisation d'un synonyme n'ait aucune incidence sur les performances, vous ne pouvez pas utiliser l'ancien nom ailleurs tant que le synonyme 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 la section Renommer une table et ajouter un synonyme.
Fonctionnement du remplacement de nom de table
Lorsque vous devez échanger des noms entre deux tables, vous pouvez enchaîner des instructions RENAME TO
pour renommer deux tables dans la même instruction. Vous pouvez ainsi associer des applications à un autre tableau sans interruption.
Pour en savoir plus, consultez Échanger des noms de table.
Fonctionnement du renommage de table
Lorsque vous renommez une table, Spanner modifie le nom de la table dans son schéma. Le renommage d'une table entrelace les tables enfants avec le nouveau nom de la table. Le renommage 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 précis des accès (FGAC)
Spanner ne met pas automatiquement à jour les vues pour utiliser le nouveau nom de table.
Pour en savoir plus, consultez la section Renommer une table.
Limites du changement de nom des tables
Le changement de nom des tables présente les limites suivantes:
- Vous ne pouvez pas renommer une table en lui donnant le nom d'une colonne de cette table si elle est entrelacée dans une autre table.
- Si la table comporte une vue, vous pouvez la supprimer 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. Vous pouvez le faire, par exemple, si vous souhaitez utiliser une base de données à la fois pour un environnement de production et 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 la section Accorder des autorisations aux principes.
Renommer une table 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 de tables
L'instruction DDL suivante modifie de manière atomique les noms de plusieurs tables. Cette option est utile lorsque vous souhaitez échanger les noms d'une ou de 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 permuter les noms de deux tables. Pour ce faire, vous devez renommer la première table en lui attribuant un nom temporaire, renommer la deuxième table en lui attribuant le nom de la première, puis renommer la première table en lui attribuant le nom de la deuxième.
Si vous avez créé deux tables comme indiqué ci-dessous:
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 de table:
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 DDL appliquée, les noms des tables sont échangés, comme illustré ci-dessous:
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 DDL 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 DDL 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'une table
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;