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