Esta página descreve como renomear tabelas e adicionar, usar e soltar tabelas sinônimos.
Opções para renomeação de tabelas e sinônimos
É possível usar a instrução ALTER TABLE
para fazer o seguinte:
- Renomear uma tabela e adicionar o nome antigo a um sinônimo.
- Troque os nomes das 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, atualize os aplicativos para usar o novo nome na programação. Durante esse período, é possível que alguns aplicativos usam o nome antigo e outros usam o novo.
Depois de atualizar todos os aplicativos para usar o novo nome, recomendamos que você faça o seguinte: você remove o sinônimo. Embora ter um sinônimo não afete o desempenho, você não pode usar o nome antigo em outro lugar até que o sinônimo seja descartado.
Os sinônimos são armazenados no esquema como um objeto synonym
. Só é possível ter um
sinônimo em uma tabela.
Para mais informações, consulte Renomear uma tabela e adicionar um sinônimo.
Como funciona a troca de nomes de tabelas
Para trocar nomes entre duas tabelas, faça o encadeamento
instruções RENAME TO
para renomear duas tabelas na mesma instrução. Isso
permite vincular aplicativos a uma tabela diferente sem interrupções.
Para mais informações, consulte Trocar nomes de tabelas.
Como funciona a renomeação de tabelas
Quando você renomeia uma tabela, o Spanner altera o nome dela no esquema dessa tabela. Renomear uma tabela intercala todas as tabelas filhas com o novo nome. A renomeação da tabela também altera referências à tabela para o seguinte:
- Índices
- Chaves estrangeiras
- Alterar streams
- Controle de acesso refinado (FGAC, na sigla em inglês)
O Spanner não atualiza automaticamente as visualizações para usar o novo nome da tabela.
Para mais informações, 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 com o nome de uma coluna nela se a tabela estiver intercalada em outra.
- Se a tabela tiver uma visualização, talvez seja melhor descartar e recriar a visualização depois de renomear a tabela.
Como os sinônimos funcionam
Você pode criar uma nova tabela com um sinônimo ou alterar uma tabela para adicionar um sinônimo a ela sem renomear a tabela. Um cenário em que você pode querer fazer isso é quando 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 uma tabela, você precisa das
spanner.databases.updateDdl
. Para verificar ou editar suas permissões, consulte
Conceder permissões a 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
Usar 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. Para exemplo, se você criar uma tabela com a DDL a seguir:
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 as
ao objeto synonym
.
GoogleSQL
ALTER TABLE Singers RENAME TO SingersNew, ADD SYNONYM Singers;
PostgreSQL
ALTER TABLE singers RENAME WITH SYNONYM TO singers_new;
Trocar os nomes das 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 exige que a primeira tabela seja renomeada com um nome temporário, a segunda tabela será renomeada com o nome da primeira tabela, a primeira será renomeada como nome.
Se você tiver 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 exclui o sinônimo da tabela:
GoogleSQL
ALTER TABLE Singers DROP SYNONYM SingersTest;
PostgreSQL
ALTER TABLE singers DROP SYNONYM singers_test;