Nesta página, descrevemos como renomear tabelas e como adicionar, usar e remover sinônimos delas.
Opções para renomeação e sinônimos de tabelas
Use a instrução ALTER TABLE
para fazer o seguinte:
- Renomeie uma tabela e adicione o nome antigo a um sinônimo.
- Trocar nomes de tabelas.
- Renomear uma única tabela.
- Crie uma nova tabela com um único sinônimo.
- Adicionar um único sinônimo a uma tabela sem renomeá-la.
Como funciona a renomeação de tabelas com sinônimos
Um cenário comum é renomear uma tabela e adicionar um sinônimo que contenha o nome da tabela antiga. Depois de renomear a tabela, é possível atualizar os aplicativos para usar o novo nome na sua programação. Durante esse período, é possível que alguns aplicativos usem o nome antigo e outros o novo.
Depois de atualizar todos os seus aplicativos para usar o novo nome, recomendamos que você remova o sinônimo. Embora ter um sinônimo não afete o desempenho, não é possível usar o nome antigo em outro lugar até que ele seja descartado.
Os sinônimos são armazenados no esquema como um objeto synonym
. Você só pode ter um
sinônimo em uma tabela.
Para saber mais, consulte Renomear uma tabela e adicionar um sinônimo.
Como funciona a troca de nomes de tabelas
Quando você precisar trocar nomes entre duas tabelas, é possível encadear instruções
RENAME TO
para renomear duas tabelas na mesma instrução. Isso
permite vincular aplicativos a uma tabela diferente sem interrupções.
Saiba mais em Trocar nomes de tabelas.
Como funciona a renomeação de tabelas
Quando você renomeia uma tabela, o Spanner altera o nome da tabela no esquema dela. Renomear uma tabela intercala todas as tabelas filhas com o novo nome da tabela. A renomeação da tabela também altera as referências da tabela para o seguinte:
- Índices
- Chaves estrangeiras
- Alterar streams
- Controle de acesso granular (FGAC, na sigla em inglês)
O Spanner não atualiza automaticamente as visualizações para usar o novo nome da tabela.
Para saber mais, consulte Renomear uma tabela.
Limitações de renomeação de tabelas
A renomeação de tabelas tem as seguintes limitações:
- Não é possível renomear uma tabela para o nome de uma coluna nessa tabela se ela estiver intercalada em outra.
- Se a tabela tiver uma visualização, é recomendável descartar e recriá-la depois de renomear a tabela.
Como funcionam os sinônimos
É possível criar uma nova tabela com um sinônimo ou alterar uma tabela para adicionar um sinônimo sem renomeá-la. Um cenário para fazer isso é se você quer usar um banco de dados para um ambiente de produção e teste.
Para mais informações, consulte Adicionar um sinônimo a uma tabela.
Permissões
Para renomear uma tabela ou adicionar um sinônimo a ela, você precisa da permissão spanner.databases.updateDdl
. Para verificar ou editar suas permissões, consulte
Conceder permissões aos princípios.
Renomear uma tabela e adicionar um sinônimo
GoogleSQL
Use ALTER TABLE RENAME TO ADD SYNONYM
para renomear uma tabela e adicionar um sinônimo.
ALTER TABLE table_name RENAME TO new_table_name, ADD SYNONYM table_name;
PostgreSQL
Use ALTER TABLE RENAME WITH ADD SYNONYM
para renomear uma tabela e adicionar um sinônimo.
ALTER TABLE table_name RENAME WITH SYNONYM TO new_table_name;
O exemplo a seguir mostra como renomear uma tabela e adicionar um sinônimo. Por exemplo, se você criar uma tabela com a seguinte 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));
É possível fazer a seguinte solicitação DDL para renomear a tabela e mover o nome atual para o objeto synonym
.
GoogleSQL
ALTER TABLE Singers RENAME TO SingersNew, ADD SYNONYM Singers;
PostgreSQL
ALTER TABLE singers RENAME WITH SYNONYM TO singers_new;
Trocar nomes de tabelas
A instrução DDL a seguir altera os nomes de várias tabelas atomicamente. Isso é útil ao trocar os nomes entre um ou mais pares de tabelas.
GoogleSQL
Use RENAME TABLE
.
RENAME TABLE old_name1 TO new_name1 [,old_name2 TO new_name2 ...];
PostgreSQL
ALTER TABLE [ IF EXISTS ] [ ONLY ] table_name1
RENAME TO new_table_name1
[, ALTER TABLE [ IF EXISTS ] [ ONLY ] table_name2
RENAME TO new_table_name2 ...];
O exemplo a seguir mostra como trocar os nomes de duas tabelas. Isso requer que a primeira tabela seja renomeada com um nome temporário, a segunda tabela seja renomeada para o nome da primeira e a primeira tabela seja renomeada com o nome da segunda tabela.
Se você criou duas tabelas da seguinte maneira:
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)
);
É possível usar a seguinte solicitação DDL para trocar os nomes das tabelas:
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;
Depois que a instrução DDL é aplicada, os nomes das tabelas são trocados:
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)
);
Renomear uma tabela
Para renomear uma tabela, use a seguinte sintaxe:
GoogleSQL
Use a instrução ALTER NAME
ou RENAME TABLE
.
ALTER TABLE table_name RENAME TO new_table_name;
RENAME TABLE table_name TO new_table_name;
PostgreSQL
Use a instrução
ALTER TABLE RENAME TO
.
ALTER TABLE [ IF EXISTS ] [ ONLY ] table_name
RENAME TO new_table_name;
O exemplo a seguir mostra uma solicitação DDL que renomeia a tabela:
GoogleSQL
RENAME TABLE Singers TO SingersNew;
PostgreSQL
ALTER TABLE singers RENAME TO singers_new;
Adicionar um sinônimo a uma tabela
Para adicionar um sinônimo a uma tabela:
GoogleSQL
ALTER TABLE table_name ADD SYNONYM synonym;
PostgreSQL
ALTER TABLE [ IF EXISTS ] [ ONLY ] table_name ADD SYNONYM synonym;
O exemplo a seguir mostra uma solicitação DDL que adiciona um sinônimo à tabela:
GoogleSQL
ALTER TABLE Singers ADD SYNONYM SingersTest;
PostgreSQL
ALTER TABLE singers ADD SYNONYM singers_test;
Criar uma tabela com um sinônimo
Para criar uma tabela com um sinônimo:
GoogleSQL
Use CREATE TABLE SYNONYM synonym_name
.
CREATE TABLE table_name (
...
SYNONYM (synonym)
), PRIMARY KEY (primary_key);
PostgreSQL
Use CREATE TABLE SYNONYM synonym_name
.
CREATE TABLE table_name (
...
SYNONYM (synonym)),
PRIMARY KEY (primary_key));
O exemplo a seguir cria uma tabela e adiciona um 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));
Remover um sinônimo de uma tabela
GoogleSQL
Use ALTER TABLE DROP SYNONYM para remover o sinônimo da tabela.
ALTER TABLE table_name DROP SYNONYM synonym;
PostgreSQL
Use ALTER TABLE DROP SYNONYM para remover o sinônimo da tabela.
ALTER TABLE [ IF EXISTS ] [ ONLY ] table_name DROP SYNONYM synonym;
O exemplo a seguir mostra uma solicitação DDL que remove o sinônimo da tabela:
GoogleSQL
ALTER TABLE Singers DROP SYNONYM SingersTest;
PostgreSQL
ALTER TABLE singers DROP SYNONYM singers_test;