Gérer les noms de tables

Cette page explique comment renommer des tables et comment ajouter, utiliser et supprimer des tables et des synonymes.

Options de changement de nom et de synonymes des tables

Vous pouvez utiliser l'instruction ALTER TABLE pour effectuer les opérations suivantes:

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. Après avoir renommé la table, vous pouvez mettre à jour les applications afin qu'elles utilisent le nouveau dans votre programmation. Pendant cette période, il est possible que certaines applications utiliser l'ancien nom et d'autres utiliser le nouveau nom.

Une fois que vous avez mis à jour toutes vos applications pour qu'elles utilisent le nouveau nom, nous vous recommandons de vous supprimez 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 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 tables.

Fonctionnement du renommage de table

Lorsque vous renommez une table, Spanner modifie le nom de la table dans le schéma de la table. 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 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 la section Renommer une table.

Limites concernant le changement de nom des tables

Le changement de nom des tables présente les limites suivantes :

  • Vous ne pouvez pas renommer une table en utilisant le nom d'une colonne de cette table si la table est entrelacées 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 un tableau auquel ajouter un synonyme. sans renommer la table. Un scénario dans lequel vous pourriez vouloir le faire si vous souhaitez utiliser une base de données pour un environnement de production et un environnement de test.

Pour en savoir plus, consultez Ajouter un synonyme à une table.

Autorisations

Pour renommer un tableau ou y ajouter un synonyme, vous devez disposer de l'élément Autorisation spanner.databases.updateDdl. Pour vérifier ou modifier vos autorisations, consultez la section Accorder des autorisations aux principes.

Renommer un tableau et ajouter un synonyme

GoogleSQL

Utiliser ALTER TABLE RENAME TO ADD SYNONYM pour renommer un tableau 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. Pour 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 la table existante à 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 permuter les noms de deux tables. Pour cela, que la première table est renommée un nom temporaire, la deuxième table est renommée au nom de la première table, puis la première table est renommée son nom.

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'une des méthodes 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 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 du tableau.

  ALTER TABLE table_name DROP SYNONYM synonym;

PostgreSQL

Utilisez ALTER TABLE DROP SYNONYM. pour supprimer le synonyme du tableau.

  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;