이 페이지에서는 테이블 이름을 바꾸는 방법, 테이블 동의어를 추가, 사용, 삭제하는 방법을 설명합니다.
테이블 이름 바꾸기 및 동의어 옵션
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;