Mengelola nama tabel

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:

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;