테이블 이름 관리

이 페이지에서는 테이블 이름을 바꾸는 방법, 테이블 동의어를 추가, 사용, 삭제하는 방법을 설명합니다.

테이블 이름 바꾸기 및 동의어 옵션

ALTER TABLE 문을 사용하여 다음을 수행할 수 있습니다.

동의어로 테이블 이름 바꾸기의 작동 방식

일반적인 시나리오는 테이블 이름을 바꾸고 이전 테이블 이름이 포함된 동의어를 추가하는 것입니다. 테이블 이름을 변경한 후 일정에 새 이름을 사용하도록 애플리케이션을 업데이트할 수 있습니다. 이 기간 동안 일부 애플리케이션에서는 이전 이름을 사용하고 다른 애플리케이션에서는 새 이름을 사용할 수 있습니다.

새 이름을 사용하도록 모든 애플리케이션을 업데이트한 후에는 동의어를 삭제하는 것이 좋습니다. 동의어가 있어도 성능에 영향을 미치지 않지만 동의어가 삭제될 때까지 이전 이름을 다른 곳에 사용할 수 없기 때문입니다.

동의어는 스키마에 synonym 객체로 저장됩니다. 테이블에는 동의어를 하나만 사용할 수 있습니다.

자세한 내용은 테이블 이름 변경 및 동의어 추가를 참조하세요.

테이블 이름 교환 작동 방식

두 테이블 간에 이름을 상호 교체해야 할 경우 RENAME TO 문을 서로 연결하여 동일한 문의 두 테이블 이름을 바꿀 수 있습니다. 이렇게 하면 중단 없이 애플리케이션을 다른 테이블에 연결할 수 있습니다.

자세한 내용은 테이블 이름 교환을 참조하세요.

테이블 이름 바꾸기 작동 방식

테이블의 이름을 변경하면 Spanner는 테이블 스키마에서 테이블 이름을 변경합니다. 테이블 이름을 변경하면 모든 하위 테이블이 새 테이블 이름으로 인터리브 처리됩니다. 테이블 이름을 바꾸면 다음에 대한 테이블에 대한 참조도 변경됩니다.

  • 색인
  • 외래 키
  • 변경 스트림
  • 세분화된 액세스 제어(FGAC)

Spanner는 새 테이블 이름을 사용하도록 뷰를 자동으로 업데이트하지 않습니다.

자세한 내용은 테이블 이름 바꾸기를 참조하세요.

테이블 이름 바꾸기 제한사항

테이블 이름 바꾸기에는 다음과 같은 제한사항이 있습니다.

  • 테이블이 다른 테이블에 인터리브 처리된 경우 테이블 이름을 해당 테이블의 열 이름으로 변경할 수 없습니다.
  • 테이블에 뷰가 있으면 테이블을 삭제하고 테이블 이름을 바꾼 후 다시 만들어야 할 수 있습니다.

동의어의 작동 방식

동의어가 있는 새 테이블을 만들거나 테이블 이름을 바꾸지 않고 테이블을 변경하여 동의어를 추가할 수 있습니다. 이렇게 해야 하는 시나리오는 프로덕션 환경과 테스트 환경 모두에 데이터베이스를 사용하려는 경우입니다.

자세한 내용은 테이블에 동의어 추가를 참조하세요.

권한

테이블 이름을 바꾸거나 테이블에 동의어를 추가하려면 spanner.databases.updateDdl 권한이 필요합니다. 권한을 확인하거나 수정하려면 주 구성원에 권한 부여를 참조하세요.

테이블 이름 바꾸기 및 동의어 추가

GoogleSQL

ALTER TABLE RENAME TO ADD SYNONYM을 사용하여 테이블 이름을 바꾸고 동의어를 추가합니다.

  ALTER TABLE table_name RENAME TO new_table_name, ADD SYNONYM table_name;

PostgreSQL

ALTER TABLE RENAME WITH ADD SYNONYM을 사용하여 테이블 이름을 바꾸고 동의어를 추가합니다.

  ALTER TABLE table_name RENAME WITH SYNONYM TO new_table_name;

다음 예시에서는 테이블 이름을 바꾸고 동의어를 추가하는 방법을 보여줍니다. 예를 들어 다음 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));

다음 DDL 요청을 수행하여 테이블 이름을 바꾸고 기존 이름을 synonym 객체로 이동할 수 있습니다.

GoogleSQL

  ALTER TABLE Singers RENAME TO SingersNew, ADD SYNONYM Singers;

PostgreSQL

  ALTER TABLE singers RENAME WITH SYNONYM TO singers_new;

테이블 이름 교환

다음 DDL 문은 여러 테이블의 이름을 원자적으로 변경합니다. 이는 하나 이상의 테이블 쌍 간에 이름을 교환할 때 유용합니다.

GoogleSQL

RENAME TABLE을 사용합니다.

  RENAME TABLE old_name1 TO new_name1 [,old_name2 TO new_name2 ...];

PostgreSQL

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 ...];

다음 예시에서는 두 테이블의 이름을 교환하는 방법을 보여줍니다. 첫 번째 테이블의 이름을 임시 이름으로, 두 번째 테이블의 이름을 첫 번째 테이블의 이름으로 변경한 후 첫 번째 테이블의 이름을 두 번째 테이블의 이름으로 변경해야 합니다.

다음과 같이 테이블 두 개를 만든 경우:

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)
        );

다음 DDL 요청을 사용하여 테이블 이름을 교환할 수 있습니다.

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;

DDL 문이 적용되면 테이블 이름이 교환됩니다.

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)
        );

테이블 이름 바꾸기

테이블 이름을 바꾸려면 다음 문법을 사용합니다.

GoogleSQL

ALTER NAME 또는 RENAME TABLE 문을 사용합니다.

  ALTER TABLE table_name RENAME TO new_table_name;
  RENAME TABLE table_name TO new_table_name;

PostgreSQL

ALTER TABLE RENAME TO 문을 사용합니다.

  ALTER TABLE [ IF EXISTS ] [ ONLY ] table_name
        RENAME TO new_table_name;

다음 예시는 테이블 이름을 바꾸는 DDL 요청을 보여줍니다.

GoogleSQL

  RENAME TABLE Singers TO SingersNew;

PostgreSQL

  ALTER TABLE singers RENAME TO singers_new;

테이블에 동의어 추가

테이블에 동의어를 추가하려면 다음 안내를 따르세요.

GoogleSQL

  ALTER TABLE table_name ADD SYNONYM synonym;

PostgreSQL

  ALTER TABLE [ IF EXISTS ] [ ONLY ] table_name ADD SYNONYM synonym;

다음 예시는 테이블에 동의어를 추가하는 DDL 요청을 보여줍니다.

GoogleSQL

  ALTER TABLE Singers ADD SYNONYM SingersTest;

PostgreSQL

  ALTER TABLE singers ADD SYNONYM singers_test;

동의어가 있는 테이블 만들기

동의어가 있는 테이블을 만들려면 다음 안내를 따르세요.

GoogleSQL

CREATE TABLE SYNONYM synonym_name을 사용합니다.

  CREATE TABLE table_name (
      ...
      SYNONYM (synonym)
  ) PRIMARY KEY (primary_key);

PostgreSQL

CREATE TABLE SYNONYM synonym_name을 사용합니다.

  CREATE TABLE table_name (
      ...
      SYNONYM (synonym),
      PRIMARY KEY (primary_key));

다음 예시에서는 테이블을 만들고 동의어를 추가합니다.

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));

테이블에서 동의어 삭제

GoogleSQL

ALTER TABLE DROP SYNONYM을 사용하여 테이블에서 동의어를 삭제합니다.

  ALTER TABLE table_name DROP SYNONYM synonym;

PostgreSQL

ALTER TABLE DROP SYNONYM을 사용하여 테이블에서 동의어를 삭제합니다.

  ALTER TABLE [ IF EXISTS ] [ ONLY ] table_name DROP SYNONYM synonym;

다음 예시는 테이블에서 동의어를 삭제하는 DDL 요청을 보여줍니다.

GoogleSQL

  ALTER TABLE Singers DROP SYNONYM SingersTest;

PostgreSQL

  ALTER TABLE singers DROP SYNONYM singers_test;