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);