Tabellennamen verwalten

Auf dieser Seite wird beschrieben, wie Sie Tabellen umbenennen und Tabellensynonyme in GoogleSQL- und PostgreSQL-Dialektdatenbanken hinzufügen, verwenden und löschen.

Optionen für das Umbenennen von Tabellen und Synonyme

Mit der ALTER TABLE-Anweisung haben Sie folgende Möglichkeiten:

So funktioniert das Umbenennen von Tabellen mit Synonymen

Ein häufiges Szenario ist das Umbenennen einer Tabelle und das Hinzufügen eines Synonyms, das den alten Tabellennamen enthält. Nachdem Sie die Tabelle umbenannt haben, können Sie Anwendungen aktualisieren, damit sie den neuen Namen in Ihrem Zeitplan verwenden. Während dieses Zeitraums kann es vorkommen, dass einige Anwendungen den alten Namen und andere den neuen Namen verwenden.

Nachdem Sie alle Ihre Anwendungen aktualisiert haben, sodass sie den neuen Namen verwenden, empfehlen wir, das Synonym zu entfernen. Ein Synonym hat keine Auswirkungen auf die Leistung. Sie können den alten Namen jedoch erst wieder verwenden, wenn das Synonym entfernt wurde.

Synonyme werden im Schema als synonym-Objekt gespeichert. Sie können nur ein Synonym für eine Tabelle haben.

Weitere Informationen finden Sie unter Tabelle umbenennen und Synonym hinzufügen.

So funktioniert das Tauschen von Tabellennamen

Wenn Sie die Namen von zwei Tabellen tauschen möchten, können Sie RENAME TO-Anweisungen verketten, um zwei Tabellen in derselben Anweisung umzubenennen. So können Sie Anwendungen ohne Unterbrechungen mit einer anderen Tabelle verknüpfen.

Weitere Informationen finden Sie unter Tabellennamen tauschen.

So funktioniert das Umbenennen von Tabellen

Wenn Sie eine Tabelle umbenennen, ändert Spanner den Tabellennamen im Schema der Tabelle. Wenn Sie eine Tabelle umbenennen, werden alle untergeordneten Tabellen mit dem neuen Tabellennamen verschachtelt. Durch das Umbenennen von Tabellen werden auch Verweise auf die Tabelle für Folgendes geändert:

  • Indexe
  • Fremdschlüssel
  • Streams ändern
  • Detaillierte Zugriffssteuerung (Fine-Grained Access Control, FGAC)

Spanner aktualisiert Ansichten nicht automatisch, damit der neue Tabellenname verwendet wird.

Weitere Informationen finden Sie unter Tabelle umbenennen.

Einschränkungen beim Umbenennen von Tabellen

Für das Umbenennen von Tabellen gelten die folgenden Einschränkungen:

  • Sie können eine Tabelle nicht in den Namen einer Spalte in dieser Tabelle umbenennen, wenn die Tabelle in einer anderen Tabelle verschachtelt ist.
  • Sie können keine Indexe umbenennen. Wenn Sie den Namen eines Index ändern möchten, löschen Sie ihn und erstellen Sie ihn mit einem neuen Namen neu.
  • Wenn die Tabelle eine Ansicht hat, sollten Sie die Ansicht löschen und nach dem Umbenennen der Tabelle neu erstellen.

Funktionsweise von Synonymen

Sie können eine neue Tabelle mit einem Synonym erstellen oder eine Tabelle ändern, um ein Synonym hinzuzufügen, ohne die Tabelle umzubenennen. Ein Szenario, in dem Sie dies möglicherweise tun möchten, ist, wenn Sie eine Datenbank sowohl für eine Produktions- als auch für eine Testumgebung verwenden möchten.

Weitere Informationen finden Sie unter Synonyme für eine Tabelle hinzufügen.

Berechtigungen

Zum Umbenennen einer Tabelle oder Hinzufügen eines Synonyms für eine Tabelle benötigen Sie die Berechtigung spanner.databases.updateDdl. Informationen zum Prüfen oder Bearbeiten Ihrer Berechtigungen finden Sie unter Grundsätzen Berechtigungen erteilen.

Tabelle umbenennen und Synonym hinzufügen

GoogleSQL

Mit ALTER TABLE RENAME TO ADD SYNONYM können Sie eine Tabelle umbenennen und ein Synonym hinzufügen.

  ALTER TABLE table_name RENAME TO new_table_name, ADD SYNONYM table_name;

PostgreSQL

Mit ALTER TABLE RENAME WITH ADD SYNONYM können Sie eine Tabelle umbenennen und ein Synonym hinzufügen.

  ALTER TABLE table_name RENAME WITH SYNONYM TO new_table_name;

Im folgenden Beispiel wird gezeigt, wie eine Tabelle umbenannt und ein Synonym hinzugefügt wird. Wenn Sie beispielsweise eine Tabelle mit der folgenden DDL erstellen:

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));

Sie können die folgende DDL-Anfrage stellen, um die Tabelle umzubenennen und den vorhandenen Namen in das synonym-Objekt zu verschieben.

GoogleSQL

  ALTER TABLE Singers RENAME TO SingersNew, ADD SYNONYM Singers;

PostgreSQL

  ALTER TABLE singers RENAME WITH SYNONYM TO singers_new;

Tabellennamen tauschen

Mit der folgenden DDL-Anweisung werden die Namen mehrerer Tabellen atomar geändert. Das ist nützlich, wenn Sie die Namen zwischen einem oder mehreren Tabellenpaaren tauschen.

GoogleSQL

Verwenden Sie RENAME TABLE.

  RENAME TABLE old_name1 TO new_name1 [,old_name2 TO new_name2 ...];

PostgreSQL

Verwenden Sie 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 ...];

Im folgenden Beispiel wird gezeigt, wie die Namen von zwei Tabellen vertauscht werden. Dazu muss die erste Tabelle in einen temporären Namen umbenannt werden, die zweite Tabelle in den Namen der ersten Tabelle und dann die erste Tabelle in den Namen der zweiten Tabelle.

Wenn Sie zwei Tabellen wie unten gezeigt erstellt haben:

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)
        );

Mit der folgenden DDL-Anfrage können Sie die Tabellennamen tauschen:

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;

Nachdem die DDL-Anweisung angewendet wurde, werden die Tabellennamen getauscht, wie im Folgenden dargestellt:

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)
        );

Tabelle umbenennen

Verwenden Sie die folgende Syntax, um eine Tabelle umzubenennen:

GoogleSQL

Verwenden Sie entweder die Anweisung ALTER NAME oder RENAME TABLE.

  ALTER TABLE table_name RENAME TO new_table_name;
  RENAME TABLE table_name TO new_table_name;

PostgreSQL

Verwenden Sie die Anweisung ALTER TABLE RENAME TO.

  ALTER TABLE [ IF EXISTS ] [ ONLY ] table_name
        RENAME TO new_table_name;

Das folgende Beispiel zeigt eine DDL-Anfrage, mit der die Tabelle umbenannt wird:

GoogleSQL

  RENAME TABLE Singers TO SingersNew;

PostgreSQL

  ALTER TABLE singers RENAME TO singers_new;

Einer Tabelle ein Synonym hinzufügen

So fügen Sie einer Tabelle ein Synonym hinzu:

GoogleSQL

  ALTER TABLE table_name ADD SYNONYM synonym;

PostgreSQL

  ALTER TABLE [ IF EXISTS ] [ ONLY ] table_name ADD SYNONYM synonym;

Das folgende Beispiel zeigt eine DDL-Anfrage, mit der ein Synonym für die Tabelle hinzugefügt wird:

GoogleSQL

  ALTER TABLE Singers ADD SYNONYM SingersTest;

PostgreSQL

  ALTER TABLE singers ADD SYNONYM singers_test;

Tabelle mit einem Synonym erstellen

So erstellen Sie eine Tabelle mit einem Synonym:

GoogleSQL

Verwenden Sie CREATE TABLE SYNONYM synonym_name.

  CREATE TABLE table_name (
      ...
      SYNONYM (synonym)
  ) PRIMARY KEY (primary_key);

PostgreSQL

Verwenden Sie CREATE TABLE SYNONYM synonym_name.

  CREATE TABLE table_name (
      ...
      SYNONYM (synonym),
      PRIMARY KEY (primary_key));

Im folgenden Beispiel wird eine Tabelle erstellt und ein Synonym hinzugefügt.

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));

Synonym aus einer Tabelle entfernen

GoogleSQL

Verwenden Sie ALTER TABLE DROP SYNONYM, um das Synonym aus der Tabelle zu entfernen.

  ALTER TABLE table_name DROP SYNONYM synonym;

PostgreSQL

Verwenden Sie ALTER TABLE DROP SYNONYM, um das Synonym aus der Tabelle zu entfernen.

  ALTER TABLE [ IF EXISTS ] [ ONLY ] table_name DROP SYNONYM synonym;

Das folgende Beispiel zeigt eine DDL-Anfrage, mit der das Synonym aus der Tabelle gelöscht wird:

GoogleSQL

  ALTER TABLE Singers DROP SYNONYM SingersTest;

PostgreSQL

  ALTER TABLE singers DROP SYNONYM singers_test;