ALTER TABLE ADD 및 DROP COLUMN 예 - Amazon Redshift

ALTER TABLE ADD 및 DROP COLUMN 예

다음 예에서는 ALTER TABLE을 사용하여 기본 테이블 열을 추가한 다음에 삭제하는 방법과 종속 객체가 있는 열을 삭제하는 방법을 보여줍니다.

기본 열을 ADD한 다음 DROP

다음 예에서는 독립형 FEEDBACK_SCORE 열을 USERS 테이블에 추가합니다. 이 열에는 간단하게 정수만 포함되어 있는데, 이 열의 기본값은 NULL(피드백 점수 없음)입니다.

먼저, PG_TABLE_DEF 카탈로그 테이블을 쿼리하여 USERS 테이블의 스키마를 봅니다.

column | type | encoding | distkey | sortkey --------------+------------------------+----------+---------+-------- userid | integer | delta | true | 1 username | character(8) | lzo | false | 0 firstname | character varying(30) | text32k | false | 0 lastname | character varying(30) | text32k | false | 0 city | character varying(30) | text32k | false | 0 state | character(2) | bytedict | false | 0 email | character varying(100) | lzo | false | 0 phone | character(14) | lzo | false | 0 likesports | boolean | none | false | 0 liketheatre | boolean | none | false | 0 likeconcerts | boolean | none | false | 0 likejazz | boolean | none | false | 0 likeclassical | boolean | none | false | 0 likeopera | boolean | none | false | 0 likerock | boolean | none | false | 0 likevegas | boolean | none | false | 0 likebroadway | boolean | none | false | 0 likemusicals | boolean | none | false | 0

이제 feedback_score 열을 추가합니다.

alter table users add column feedback_score int default NULL;

USERS에서 FEEDBACK_SCORE 열을 선택하여 열이 추가되었는지 확인합니다.

select feedback_score from users limit 5; feedback_score ---------------- NULL NULL NULL NULL NULL

열을 삭제하여 원래 DDL을 복구합니다.

alter table users drop column feedback_score;

종속 객체가 있는 열 삭제

다음 예에서는 종속 객체가 있는 열을 삭제합니다. 결과적으로, 종속 객체도 삭제됩니다.

시작하려면 FEEDBACK_SCORE 열을 USERS 테이블에 다시 추가합니다.

alter table users add column feedback_score int default NULL;

다음으로, USERS_VIEW라는 USERS 테이블에서 뷰를 생성합니다.

create view users_view as select * from users;

이제, FEEDBACK_SCORE 열을 USERS 테이블에서 삭제해 봅니다. 다음 DROP 문에서는 기본 동작(RESTRICT)을 사용합니다.

alter table users drop column feedback_score;

다른 객체가 이 열에 종속되어 있으므로 Amazon Redshift가 이 열을 삭제할 수 없다는 오류 메시지를 표시합니다.

이번에는 모든 종속 객체를 삭제하도록 CASCADE를 지정하여 FEEDBACK_SCORE 열을 다시 삭제해 봅니다.

alter table users drop column feedback_score cascade;