[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