Halaman ini menjelaskan cara mengganti nama tabel dan cara menambahkan, menggunakan, dan menghapus sinonim tabel.
Opsi untuk penggantian nama dan sinonim tabel
Anda dapat menggunakan pernyataan ALTER TABLE
untuk melakukan hal berikut:
- Mengganti nama tabel dan menambahkan nama lama ke sinonim.
- Tukar nama tabel.
- Mengganti nama satu tabel.
- Buat tabel baru dengan satu sinonim.
- Menambahkan satu sinonim ke tabel tanpa mengganti namanya.
Cara kerja penggantian nama tabel dengan sinonim
Skenario umum adalah mengganti nama tabel dan menambahkan sinonim yang berisi nama tabel lama. Setelah mengganti nama tabel, Anda dapat mengupdate aplikasi untuk menggunakan nama baru sesuai jadwal. Selama periode ini, beberapa aplikasi mungkin menggunakan nama lama dan yang lainnya menggunakan nama baru.
Setelah memperbarui semua aplikasi untuk menggunakan nama baru, sebaiknya hapus sinonim. Meskipun memiliki sinonim tidak memengaruhi performa, Anda tidak dapat menggunakan nama lama di tempat lain hingga sinonim dihapus.
Sinonim disimpan dalam skema sebagai objek synonym
. Anda hanya dapat memiliki satu
sinonim di tabel.
Untuk informasi selengkapnya, lihat Mengganti nama tabel dan menambahkan sinonim.
Cara kerja pertukaran nama tabel
Jika perlu menukar nama antara dua tabel, Anda dapat menyambungkan pernyataan RENAME TO
untuk mengganti nama dua tabel dalam pernyataan yang sama. Hal ini
memungkinkan Anda menautkan aplikasi ke tabel lain tanpa gangguan.
Untuk mengetahui informasi selengkapnya, lihat Menukar nama tabel.
Cara kerja penggantian nama tabel
Saat Anda mengganti nama tabel, Spanner akan mengubah nama tabel dalam skema tabel. Mengganti nama tabel akan menyisipkan tabel turunan dengan nama tabel baru. Penggantian nama tabel juga akan mengubah referensi ke tabel untuk hal berikut:
- Indeks
- Kunci asing
- Aliran data perubahan
- Kontrol akses yang sangat terperinci (FGAC)
Spanner tidak otomatis memperbarui tampilan untuk menggunakan nama tabel baru.
Untuk mengetahui informasi selengkapnya, lihat Mengganti nama tabel.
Batasan penggantian nama tabel
Penggantian nama tabel memiliki batasan berikut:
- Anda tidak dapat mengganti nama tabel menjadi nama kolom dalam tabel tersebut jika tabel diinterleave dalam tabel lain.
- Jika tabel memiliki tampilan, Anda mungkin ingin menghapus tampilan dan membuatnya ulang setelah mengganti nama tabel.
Cara kerja sinonim
Anda dapat membuat tabel baru dengan sinonim atau mengubah tabel untuk menambahkan sinonim ke tabel tersebut tanpa mengganti nama tabel. Skenario untuk saat Anda mungkin ingin melakukannya adalah jika Anda ingin menggunakan database untuk lingkungan produksi dan pengujian.
Untuk informasi selengkapnya, lihat Menambahkan sinonim ke tabel.
Izin
Untuk mengganti nama tabel atau menambahkan sinonim ke tabel, Anda memerlukan izin spanner.databases.updateDdl
. Untuk memeriksa atau mengedit izin Anda, lihat
Memberikan izin ke prinsip.
Mengganti nama tabel dan menambahkan sinonim
GoogleSQL
Gunakan ALTER TABLE RENAME TO ADD SYNONYM
untuk mengganti nama tabel dan menambahkan sinonim.
ALTER TABLE table_name RENAME TO new_table_name, ADD SYNONYM table_name;
PostgreSQL
Gunakan ALTER TABLE RENAME WITH ADD SYNONYM
untuk mengganti nama tabel dan menambahkan sinonim.
ALTER TABLE table_name RENAME WITH SYNONYM TO new_table_name;
Contoh berikut menunjukkan cara mengganti nama tabel dan menambahkan sinonim. Misalnya, jika Anda membuat tabel dengan DDL berikut:
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));
Anda dapat membuat permintaan DDL berikut untuk mengganti nama tabel dan memindahkan nama yang ada ke objek synonym
.
GoogleSQL
ALTER TABLE Singers RENAME TO SingersNew, ADD SYNONYM Singers;
PostgreSQL
ALTER TABLE singers RENAME WITH SYNONYM TO singers_new;
Menukar nama tabel
Pernyataan DDL berikut mengubah nama beberapa tabel secara atomik. Hal ini berguna saat menukar nama antara satu atau beberapa pasangan tabel.
GoogleSQL
Gunakan RENAME TABLE
.
RENAME TABLE old_name1 TO new_name1 [,old_name2 TO new_name2 ...];
PostgreSQL
Gunakan 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 ...];
Contoh berikut menunjukkan cara menukar nama dua tabel. Hal ini mengharuskan tabel pertama diganti namanya menjadi nama sementara, tabel kedua diganti namanya menjadi nama tabel pertama, lalu tabel pertama diganti namanya menjadi nama tabel kedua.
Jika Anda telah membuat dua tabel sebagai berikut:
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)
);
Anda dapat menggunakan permintaan DDL berikut untuk menukar nama tabel:
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;
Setelah pernyataan DDL diterapkan, nama tabel akan ditukar:
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)
);
Mengganti nama tabel
Untuk mengganti nama tabel, gunakan sintaksis berikut:
GoogleSQL
Gunakan pernyataan
ALTER NAME
atau RENAME TABLE
.
ALTER TABLE table_name RENAME TO new_table_name;
RENAME TABLE table_name TO new_table_name;
PostgreSQL
Gunakan pernyataan ALTER TABLE RENAME TO
.
ALTER TABLE [ IF EXISTS ] [ ONLY ] table_name
RENAME TO new_table_name;
Contoh berikut menunjukkan permintaan DDL yang mengganti nama tabel:
GoogleSQL
RENAME TABLE Singers TO SingersNew;
PostgreSQL
ALTER TABLE singers RENAME TO singers_new;
Menambahkan sinonim ke tabel
Untuk menambahkan sinonim ke tabel:
GoogleSQL
ALTER TABLE table_name ADD SYNONYM synonym;
PostgreSQL
ALTER TABLE [ IF EXISTS ] [ ONLY ] table_name ADD SYNONYM synonym;
Contoh berikut menunjukkan permintaan DDL yang menambahkan sinonim ke tabel:
GoogleSQL
ALTER TABLE Singers ADD SYNONYM SingersTest;
PostgreSQL
ALTER TABLE singers ADD SYNONYM singers_test;
Membuat tabel dengan sinonim
Untuk membuat tabel dengan sinonim:
GoogleSQL
Gunakan CREATE TABLE SYNONYM synonym_name
.
CREATE TABLE table_name (
...
SYNONYM (synonym)
) PRIMARY KEY (primary_key);
PostgreSQL
Gunakan CREATE TABLE SYNONYM synonym_name
.
CREATE TABLE table_name (
...
SYNONYM (synonym),
PRIMARY KEY (primary_key));
Contoh berikut membuat tabel dan menambahkan sinonim.
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));
Menghapus sinonim dari tabel
GoogleSQL
Gunakan ALTER TABLE DROP SYNONYM untuk menghapus sinonim dari tabel.
ALTER TABLE table_name DROP SYNONYM synonym;
PostgreSQL
Gunakan ALTER TABLE DROP SYNONYM untuk menghapus sinonim dari tabel.
ALTER TABLE [ IF EXISTS ] [ ONLY ] table_name DROP SYNONYM synonym;
Contoh berikut menunjukkan permintaan DDL yang menghapus sinonim dari tabel:
GoogleSQL
ALTER TABLE Singers DROP SYNONYM SingersTest;
PostgreSQL
ALTER TABLE singers DROP SYNONYM singers_test;