2017년 5월 21일 일요일

PK 생성 및 삭제시 예문

PK 생성 및 삭제시 예문
!! 특정 컬럼 중 NOT NULL이 아니면 PK가 생성되지 않는다.

/* 테스트 테이블 생성 */
create table t_test ( a varchar2(10), b varchar2(10),c varchar(10),d varchar2(10));

/* PK 생성 */
alter table t_test add constraints test_pk primary key(a,b);

/* 해당 컬럼에 대한 데이타 입력 */
insert into t_test(a,b,c) values('1','a','data');
insert into t_test(a,b,c) values('1','b','data');
insert into t_test(a,b,c) values('1','c','data');

/* 해당 컬럼에 대한 데이타 조회 */
select a,b,c,nvl(d,'NULL') d from t_test;

/* PK 삭제 */
alter table t_test drop constraints test_pk;

/* PK 재생성 -> NULL 에러 */
alter table t_test add constraints test_pk primary key(a,b,d);

/* 특정 컬럼의 NULL 값을 스페이스로 대체하여 수정 */
update t_test set d = nvl(d,' ');

/* PK 재생성 -> 정상적으로 생성 */
alter table t_test add constraints test_pk primary key(a,b,d);