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;