Halaman ini menjelaskan cara mengganti nama tabel serta cara menambahkan, menggunakan, dan menghapus sinonim tabel.
Opsi untuk penggantian nama tabel dan sinonim
Anda dapat menggunakan pernyataan ALTER TABLE
untuk melakukan hal berikut:
- Ganti nama tabel dan tambahkan nama lama ke sinonim.
- Tukar nama tabel.
- Mengganti nama satu tabel.
- Buat tabel baru dengan satu sinonim.
- Menambahkan sinonim tunggal 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 Anda. Selama periode ini, beberapa aplikasi mungkin menggunakan nama lama dan yang lainnya menggunakan nama baru.
Setelah memperbarui semua aplikasi Anda untuk menggunakan nama baru, sebaiknya hapus sinonim tersebut. Meskipun memiliki sinonim tidak memengaruhi performa, Anda tidak dapat menggunakan nama lama di tempat lain sampai sinonim tersebut dihapus.
Sinonim disimpan dalam skema sebagai objek synonym
. Anda hanya dapat memiliki
satu sinonim di tabel.
Untuk mengetahui informasi selengkapnya, lihat Mengganti nama tabel dan menambahkan sinonim.
Cara kerja pertukaran nama tabel
Jika perlu menukar nama antara dua tabel, Anda dapat merangkai pernyataan
RENAME TO
untuk mengganti nama dua tabel dalam pernyataan yang sama. Hal ini
memungkinkan Anda menautkan aplikasi ke tabel yang berbeda tanpa gangguan.
Untuk mengetahui informasi selengkapnya, lihat Tukar 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 terperinci (FGAC)
Spanner tidak memperbarui tampilan secara otomatis 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 disisipkan di tabel lain.
- Jika tabel memiliki tampilan, sebaiknya Anda menghapus tampilan tersebut dan membuatnya lagi setelah mengganti nama tabel.
Cara kerja sinonim
Anda dapat membuat tabel baru dengan sinonim atau mengubah tabel untuk menambahkan sinonim tanpa mengganti nama tabel. Skenario ketika Anda mungkin ingin melakukan hal ini adalah jika Anda ingin menggunakan database untuk lingkungan produksi dan pengujian.
Untuk mengetahui 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;
Tukar nama tabel
Pernyataan DDL berikut mengubah nama beberapa tabel secara atomik. Fungsi ini berguna saat menukar nama di 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. Ini mengharuskan nama tabel pertama diganti menjadi nama sementara, tabel kedua diganti namanya menjadi nama tabel pertama, lalu tabel pertama diganti namanya menjadi nama tabel kedua.
Jika Anda sudah 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 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 menampilkan 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;