En esta página, se describe cómo cambiar el nombre de las tablas y cómo agregar, usar y descartar sinónimos de tablas en bases de datos con dialecto de Google SQL y bases de datos con dialecto de PostgreSQL.
Opciones para cambiar el nombre de las tablas y los sinónimos
Puedes usar la sentencia ALTER TABLE
para hacer lo siguiente:
- Cambia el nombre de una tabla y agrega el nombre anterior a un sinónimo.
- Intercambia los nombres de las tablas.
- Cambia el nombre de una sola tabla.
- Crea una tabla nueva con un solo sinónimo.
- Agregar un solo sinónimo a una tabla sin cambiarle el nombre
Cómo funciona el cambio de nombre de tablas con sinónimos
Una situación común es cambiar el nombre de una tabla y agregar un sinónimo que contenga el nombre anterior. Después de cambiar el nombre de la tabla, puedes actualizar las aplicaciones para que usen el nombre nuevo en tu programación. Durante este período, es posible que algunas aplicaciones usen el nombre anterior y otras el nuevo.
Después de actualizar todas tus aplicaciones para usar el nombre nuevo, te recomendamos que quites el sinónimo. Si bien tener un sinónimo no afecta el rendimiento, no puedes usar el nombre anterior en ningún otro lugar 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 Cómo cambiar el nombre de una tabla y agregar un sinónimo.
Cómo funciona el intercambio de nombres de tablas
Cuando necesites intercambiar nombres entre dos tablas, puedes encadenar instrucciones RENAME TO
para cambiar el nombre de dos tablas en la misma instrucción. Esto te permite vincular aplicaciones a una tabla diferente sin interrupciones.
Para obtener más información, consulta Cómo intercambiar los nombres de las tablas.
Cómo funciona el cambio de nombre de tabla
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, se intercalan las tablas secundarias con el nombre de la tabla nueva. El cambio de nombre de la tabla también cambia las referencias a la tabla en los siguientes casos:
- Índices
- Claves externas
- Cambiar transmisiones
- Control de acceso detallado (FGAC)
Spanner no actualiza automáticamente las vistas para usar el nuevo nombre de la tabla.
Para obtener más información, consulta Cómo cambiar el nombre de una tabla.
Limitaciones para cambiar el nombre de las tablas
El cambio de nombre de las tablas tiene las siguientes limitaciones:
- No puedes cambiar el nombre de una tabla al nombre de una columna en esa tabla si esta se intercala en otra.
- Si la tabla tiene una vista, te recomendamos que la descartes y la vuelvas a crear después de cambiarle el nombre.
Cómo funcionan los sinónimos
Puedes crear una tabla nueva con un sinónimo o alterar una tabla para agregarle un sinónimo sin cambiarle el nombre. Una situación en la que podrías querer hacer esto es si quieres usar una base de datos para un entorno de producción y de prueba.
Para obtener más información, consulta Cómo agregar un sinónimo a una tabla.
Permisos
Para cambiar el nombre de una tabla o agregar un sinónimo a una tabla, necesitas el permiso spanner.databases.updateDdl
. Para verificar o editar tus permisos, consulta Otorga permisos a los principios.
Cambia el nombre de una tabla y agrega un sinónimo
GoogleSQL
Usa ALTER TABLE RENAME TO ADD SYNONYM
para cambiar el nombre de una tabla y agregar 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 agregar 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 agregar un sinónimo. Por ejemplo, si creas 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 realizar la siguiente solicitud de DDL para cambiar el nombre de la tabla y mover el nombre existente 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 tablas
La siguiente sentencia DDL cambia los nombres de varias tablas de forma atómica. Esto es útil cuando se intercambian los nombres entre uno o más pares de tablas.
GoogleSQL
Usar RENAME TABLE
.
RENAME TABLE old_name1 TO new_name1 [,old_name2 TO new_name2 ...];
PostgreSQL
Usar 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. Esto requiere que se cambie el nombre de la primera tabla a uno temporal, que se cambie el nombre de la segunda tabla al nombre de la primera y, luego, que se cambie el nombre de la primera tabla al nombre de la segunda.
Si creaste 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;
Después de aplicar la sentencia DDL, se intercambian los nombres de las tablas, 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)
);
Cambia el nombre de una tabla
Para cambiar el nombre de una tabla, usa la siguiente sintaxis:
GoogleSQL
Usa la sentencia 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 sentencia ALTER TABLE RENAME TO
.
ALTER TABLE [ IF EXISTS ] [ ONLY ] table_name
RENAME TO new_table_name;
En el siguiente ejemplo, se muestra una solicitud de DDL que cambia el nombre de la tabla:
GoogleSQL
RENAME TABLE Singers TO SingersNew;
PostgreSQL
ALTER TABLE singers RENAME TO singers_new;
Cómo agregar un sinónimo a una tabla
Para agregar 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 de DDL que agrega un sinónimo a la tabla:
GoogleSQL
ALTER TABLE Singers ADD SYNONYM SingersTest;
PostgreSQL
ALTER TABLE singers ADD SYNONYM singers_test;
Crea una tabla con un sinónimo
Para crear una tabla con un sinónimo, sigue estos pasos:
GoogleSQL
Usar CREATE TABLE SYNONYM synonym_name
.
CREATE TABLE table_name (
...
SYNONYM (synonym)
) PRIMARY KEY (primary_key);
PostgreSQL
Usar 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 agrega 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));
Cómo 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 de DDL que descarta el sinónimo de la tabla:
GoogleSQL
ALTER TABLE Singers DROP SYNONYM SingersTest;
PostgreSQL
ALTER TABLE singers DROP SYNONYM singers_test;