테이블 이름 관리

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

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

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;