Questa pagina descrive come rinominare le tabelle e come aggiungere, utilizzare e rilasciare una tabella sinonimi.
Opzioni per la ridenominazione delle tabelle e i sinonimi
Puoi utilizzare l'istruzione ALTER TABLE
per:
- Rinominare una tabella e aggiungere il vecchio nome a un sinonimo.
- Scambia i nomi delle tabelle.
- Rinominare una singola tabella.
- Crea una nuova tabella con un singolo sinonimo.
- Aggiungi un singolo sinonimo a una tabella senza rinominarla.
Come funziona la ridenominazione delle tabelle con sinonimi
Uno scenario comune è rinominare una tabella e aggiungere un sinonimo contenente il nome della tabella precedente. Dopo aver rinominato la tabella, puoi aggiornare le applicazioni in modo che utilizzino il nuovo il nome della tua pianificazione. Durante questo periodo, è possibile che alcune applicazioni il vecchio nome e altri ancora quello nuovo.
Dopo aver aggiornato tutte le applicazioni per utilizzare il nuovo nome, ti consigliamo di il sinonimo viene rimosso. Sebbene l'utilizzo di un sinonimo non influisca sul rendimento, non puoi utilizzare il vecchio nome altrove finché il sinonimo non viene eliminato.
I sinonimi vengono archiviati nello schema come oggetto synonym
. Puoi avere un solo
suonino in una tabella.
Per ulteriori informazioni, consulta la sezione Rinominare una tabella e aggiungere un sinonimo.
Come funziona lo scambio dei nomi delle tabelle
Quando devi scambiare i nomi tra due tabelle, puoi concatenare
RENAME TO
per rinominare due tabelle nella stessa istruzione. Questo
consente di collegare le applicazioni a una tabella diversa senza interruzioni.
Per ulteriori informazioni, vedi Scambiare nomi delle tabelle.
Come funziona la ridenominazione delle tabelle
Quando rinomini una tabella, Spanner modifica il nome della tabella nello schema della tabella. La ridenominazione di una tabella intercala le eventuali tabelle secondarie con il nuovo nome della tabella. La ridenominazione della tabella modifica anche i riferimenti alla tabella per quanto segue:
- Indici
- Chiavi esterne
- Flussi di modifiche
- Controllo dell'accesso granulare (FGAC)
Spanner non aggiorna automaticamente le viste in modo che utilizzino il nuovo nome della tabella.
Per ulteriori informazioni, vedi Rinominare una tabella.
Limitazioni per la ridenominazione delle tabelle
Il rinomino delle tabelle presenta le seguenti limitazioni:
- Non puoi rinominare una tabella con il nome di una colonna al suo interno se la tabella è con interleaving in un'altra tabella.
- Se la tabella ha una visualizzazione, potresti volerla abbandonare e ricrearla dopo rinominando la tabella.
Come funzionano i sinonimi
Puoi creare una nuova tabella con un sinonimo o modificare una tabella per aggiungere un sinonimo a senza rinominare la tabella. Uno scenario in cui potresti voler eseguire questa operazione è quello di utilizzare un database sia per l'ambiente di produzione che per quello di test.
Per ulteriori informazioni, vedi Aggiungere un sinonimo a una tabella.
Autorizzazioni
Per rinominare una tabella o aggiungere un sinonimo a una tabella, devi disporre dell'autorizzazione spanner.databases.updateDdl
. Per controllare o modificare le tue autorizzazioni, vedi
Concedi le autorizzazioni ai principi.
Rinominare una tabella e aggiungere un sinonimo
GoogleSQL
Utilizza ALTER TABLE RENAME TO ADD SYNONYM
per rinominare una tabella e aggiungere un sinonimo.
ALTER TABLE table_name RENAME TO new_table_name, ADD SYNONYM table_name;
PostgreSQL
Utilizza ALTER TABLE RENAME WITH ADD SYNONYM
per rinominare una tabella e aggiungere un sinonimo.
ALTER TABLE table_name RENAME WITH SYNONYM TO new_table_name;
L'esempio seguente mostra come rinominare una tabella e aggiungere un sinonimo. Per Ad esempio, se crei una tabella con il seguente 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));
Puoi effettuare la seguente richiesta DDL per rinominare la tabella e spostare
all'oggetto synonym
.
GoogleSQL
ALTER TABLE Singers RENAME TO SingersNew, ADD SYNONYM Singers;
PostgreSQL
ALTER TABLE singers RENAME WITH SYNONYM TO singers_new;
Scambiare i nomi delle tabelle
La seguente istruzione DDL modifica i nomi di più tabelle a livello atomico. Questa operazione è utile per scambiare i nomi tra una o più coppie di tabelle.
GoogleSQL
Utilizza RENAME TABLE
.
RENAME TABLE old_name1 TO new_name1 [,old_name2 TO new_name2 ...];
PostgreSQL
Utilizza 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'esempio seguente mostra come scambiare i nomi di due tabelle. Ciò richiede che la prima tabella viene rinominata con un nome temporaneo, la seconda con il nome della prima tabella, la prima viene rinominata con il nome della seconda nome.
Se disponi ha creato due tabelle come segue:
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)
);
Puoi utilizzare la seguente richiesta DDL per scambiare i nomi delle tabelle:
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;
Dopo l'applicazione dell'istruzione DDL, i nomi delle tabelle vengono scambiati:
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)
);
Rinominare una tabella
Per rinominare una tabella, utilizza la seguente sintassi:
GoogleSQL
Utilizza l'istruzione
ALTER NAME
o RENAME TABLE
.
ALTER TABLE table_name RENAME TO new_table_name;
RENAME TABLE table_name TO new_table_name;
PostgreSQL
Utilizza l'istruzione ALTER TABLE RENAME TO
.
ALTER TABLE [ IF EXISTS ] [ ONLY ] table_name
RENAME TO new_table_name;
L'esempio seguente mostra una richiesta DDL che rinomina la tabella:
GoogleSQL
RENAME TABLE Singers TO SingersNew;
PostgreSQL
ALTER TABLE singers RENAME TO singers_new;
Aggiungere un sinonimo a una tabella
Per aggiungere un sinonimo a una tabella:
GoogleSQL
ALTER TABLE table_name ADD SYNONYM synonym;
PostgreSQL
ALTER TABLE [ IF EXISTS ] [ ONLY ] table_name ADD SYNONYM synonym;
L'esempio seguente mostra una richiesta DDL che aggiunge un sinonimo alla tabella:
GoogleSQL
ALTER TABLE Singers ADD SYNONYM SingersTest;
PostgreSQL
ALTER TABLE singers ADD SYNONYM singers_test;
Crea una tabella con un sinonimo
Per creare una tabella con un sinonimo:
GoogleSQL
Utilizza CREATE TABLE SYNONYM synonym_name
.
CREATE TABLE table_name (
...
SYNONYM (synonym)
) PRIMARY KEY (primary_key);
PostgreSQL
Utilizza CREATE TABLE SYNONYM synonym_name
.
CREATE TABLE table_name (
...
SYNONYM (synonym),
PRIMARY KEY (primary_key));
L'esempio seguente crea una tabella e aggiunge un sinonimo.
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));
Rimuovere un sinonimo da una tabella
GoogleSQL
Utilizza ALTER TABLE DROP SYNONYM per rimuovere il sinonimo dalla tabella.
ALTER TABLE table_name DROP SYNONYM synonym;
PostgreSQL
Utilizza ALTER TABLE DROP SYNONYM per rimuovere il sinonimo dalla tabella.
ALTER TABLE [ IF EXISTS ] [ ONLY ] table_name DROP SYNONYM synonym;
L'esempio seguente mostra una richiesta DDL che elimina il sinonimo dalla tabella:
GoogleSQL
ALTER TABLE Singers DROP SYNONYM SingersTest;
PostgreSQL
ALTER TABLE singers DROP SYNONYM singers_test;