Gestionar nombres de tabla

En esta página se describe cómo cambiar el nombre de las tablas y cómo añadir, usar y eliminar sinónimos de tablas en bases de datos con dialecto de GoogleSQL y PostgreSQL.

Opciones para cambiar el nombre de las tablas y los sinónimos

Puede usar la instrucción ALTER TABLE para hacer lo siguiente:

Cómo funciona el cambio de nombre de las tablas con sinónimos

Un caso habitual es cambiar el nombre de una tabla y añadir un sinónimo que contenga el nombre antiguo de la tabla. Después de cambiar el nombre de la tabla, puedes actualizar las aplicaciones para que usen el nuevo nombre cuando quieras. Durante este periodo, es posible que algunas aplicaciones usen el nombre antiguo y otras, el nuevo.

Una vez que hayas actualizado todas tus aplicaciones para que usen el nuevo nombre, te recomendamos que elimines el sinónimo. Aunque tener un sinónimo no afecta al rendimiento, no puedes usar el nombre antiguo en otro sitio hasta que se elimine el sinónimo.

Los sinónimos se almacenan en el esquema como un objeto synonym. Solo puedes tener un sinónimo en una tabla.

Para obtener más información, consulta el artículo Cambiar el nombre de una tabla y añadir un sinónimo.

Cómo funciona el intercambio de nombres de tablas

Si necesitas intercambiar los nombres de dos tablas, puedes encadenar instrucciones RENAME TO para cambiar el nombre de dos tablas en la misma instrucción. De esta forma, puedes vincular aplicaciones a otra tabla sin interrupciones.

Para obtener más información, consulta Intercambiar nombres de tablas.

Cómo funciona el cambio de nombre de las tablas

Cuando cambias el nombre de una tabla, Spanner cambia el nombre de la tabla en el esquema de la tabla. Si cambias el nombre de una tabla, las tablas secundarias se intercalarán con el nuevo nombre de la tabla. Al cambiar el nombre de una tabla, también se modifican las referencias a la tabla en los siguientes elementos:

  • Índices
  • Claves externas
  • Flujo de cambios
  • Control de acceso pormenorizado (FGAC)

Spanner no actualiza automáticamente las vistas para que usen el nuevo nombre de tabla.

Para obtener más información, consulta Cambiar el nombre de una tabla.

Limitaciones al cambiar el nombre de las tablas

Cambiar el nombre de una tabla tiene las siguientes limitaciones:

  • No puedes cambiar el nombre de una tabla por el de una columna de esa tabla si la tabla está intercalada en otra tabla.
  • No puedes cambiar el nombre de los índices. Para cambiar el nombre de un índice, elimínalo y vuelve a crearlo con otro nombre.
  • Si la tabla tiene una vista, puede que te interese eliminarla y volver a crearla después de cambiarle el nombre.

Cómo funcionan los sinónimos

Puedes crear una tabla con un sinónimo o modificar una tabla para añadirle un sinónimo sin cambiarle el nombre. Un ejemplo de situación en la que puede querer hacerlo es si quiere usar una base de datos tanto en un entorno de producción como en un entorno de prueba.

Para obtener más información, consulta Añadir un sinónimo a una tabla.

Permisos

Para cambiar el nombre de una tabla o añadir un sinónimo a una tabla, necesitas el permiso spanner.databases.updateDdl. Para comprobar o editar tus permisos, consulta Conceder permisos a principales.

Cambiar el nombre de una tabla y añadir un sinónimo

GoogleSQL

Usa ALTER TABLE RENAME TO ADD SYNONYM para cambiar el nombre de una tabla y añadir un sinónimo.

  ALTER TABLE table_name RENAME TO new_table_name, ADD SYNONYM table_name;

PostgreSQL

Usa ALTER TABLE RENAME WITH ADD SYNONYM para cambiar el nombre de una tabla y añadir un sinónimo.

  ALTER TABLE table_name RENAME WITH SYNONYM TO new_table_name;

En el siguiente ejemplo se muestra cómo cambiar el nombre de una tabla y añadir un sinónimo. Por ejemplo, si crea una tabla con el siguiente DDL:

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

Puedes hacer la siguiente solicitud de DDL para cambiar el nombre de la tabla y mover el nombre actual al objeto synonym.

GoogleSQL

  ALTER TABLE Singers RENAME TO SingersNew, ADD SYNONYM Singers;

PostgreSQL

  ALTER TABLE singers RENAME WITH SYNONYM TO singers_new;

Intercambiar nombres de tabla

La siguiente instrucción DDL cambia los nombres de varias tablas de forma atómica. Esto resulta útil cuando se intercambian los nombres entre una o varias parejas de tablas.

GoogleSQL

Utiliza RENAME TABLE.

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

PostgreSQL

Utiliza 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 ...];

En el siguiente ejemplo se muestra cómo intercambiar los nombres de dos tablas. Para ello, es necesario cambiar el nombre de la primera tabla por un nombre temporal, cambiar el nombre de la segunda tabla por el de la primera y, por último, cambiar el nombre de la primera tabla por el de la segunda.

Si ha creado dos tablas como se muestra a continuación:

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

Puedes usar la siguiente solicitud de DDL para intercambiar los nombres de las tablas:

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;

Una vez que se aplica la instrucción DDL, los nombres de las tablas se intercambian, tal como se muestra a continuación:

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

Cambiar el nombre de una tabla

Para cambiar el nombre de una tabla, usa la siguiente sintaxis:

GoogleSQL

Usa la instrucción ALTER NAME o RENAME TABLE.

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

PostgreSQL

Usa la instrucción ALTER TABLE RENAME TO.

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

En el siguiente ejemplo se muestra una solicitud DDL que cambia el nombre de la tabla:

GoogleSQL

  RENAME TABLE Singers TO SingersNew;

PostgreSQL

  ALTER TABLE singers RENAME TO singers_new;

Añadir un sinónimo a una tabla

Para añadir un sinónimo a una tabla, sigue estos pasos:

GoogleSQL

  ALTER TABLE table_name ADD SYNONYM synonym;

PostgreSQL

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

En el siguiente ejemplo se muestra una solicitud DDL que añade un sinónimo a la tabla:

GoogleSQL

  ALTER TABLE Singers ADD SYNONYM SingersTest;

PostgreSQL

  ALTER TABLE singers ADD SYNONYM singers_test;

Crear una tabla con un sinónimo

Para crear una tabla con un sinónimo, sigue estos pasos:

GoogleSQL

Utiliza CREATE TABLE SYNONYM synonym_name.

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

PostgreSQL

Utiliza CREATE TABLE SYNONYM synonym_name.

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

En el siguiente ejemplo se crea una tabla y se añade un sinónimo.

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

Quitar un sinónimo de una tabla

GoogleSQL

Usa ALTER TABLE DROP SYNONYM para quitar el sinónimo de la tabla.

  ALTER TABLE table_name DROP SYNONYM synonym;

PostgreSQL

Usa ALTER TABLE DROP SYNONYM para quitar el sinónimo de la tabla.

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

En el siguiente ejemplo se muestra una solicitud DDL que elimina el sinónimo de la tabla:

GoogleSQL

  ALTER TABLE Singers DROP SYNONYM SingersTest;

PostgreSQL

  ALTER TABLE singers DROP SYNONYM singers_test;