[Oracle] 외래키[제약조건] 잠시 비활성화 하는법

테이블에 데이터를 넣고 지울때 외래키 제약조건이 걸려있을때 다른 테이블이랑 외래키 제약조건[foreign key]이 걸려있어 외래키 걸려있는 테이블을 먼저 만들고 데이터를 넣은 다음에 생성해야 할 때가 있다. 

 

하지만 부득이하게 자식 테이블에 데이터를 먼저 넣어야 할때는 제약조건 때문에 데이터를 못넣는데 이때 잠시 제약조건을 비활성화 해서 데이터를 집어넣는 방법이 있다.

 

ALTER TABLE 테이블명

DISABLE[ENABLE] CONSTRAINT 제약조건명;

 

ex)

ALTER TABLE PDS_CHANNEL
DISABLE CONSTRAINT FIDX_PDS_CHANNEL_CUSTOMERCD;
 
 
ALTER TABLE PDS_CHANNEL
ENABLE CONSTRAINT FIDX_PDS_CHANNEL_CUSTOMERCD;
 

DISABLE은 비활성화 명령어 이고

ENABLE은 활성화 시키는 명령어 이다.

 

DISABLE로 잠시 비활성화 시킨다음 데이터를 넣고 ENABLE로 다시 활성화를 시켜야 한다.

하지만 다시 활성화 시키려 할때

ORA-02298 에러가 발생하는데 부모 테이블에 데이터가 없을때 발생하므로 부모키에 데이터를 넣고 다시 활성화 시킬 수 있다.

 

댓글

Designed by JB FACTORY