제약 조건 비활성화 - 부모테이블의 데이터 삭제방법, 제약 조건 비활성화/활성화, CASCADE 옵션

CODEDRAGON Development/Database

반응형

   

   

참조무결성 제약

자식테이블인 사원테이블(emp)은 부모테이블인 부서테이블(dept)의 기본키인 부서번호를 참조하고 있습니다.

부서 테이블에서 10번 부서정보는 사원테이블에 10번 부서에 근무하는 사원이 존재하므로 부서 번호 10번은 부서테이블에서 삭제할 수 없습니다.

부모테이블의 정보를 삭제하게 되면 자식 테이블에서 자신이 참조하고 있는 부모테이블의 정보를 읽어버리게 되기 때문입니다.

   

   

   

   

부모테이블의 데이터 삭제방법

  • 자식테이블에서 참조하는 있는 정보를 먼저 삭제한 후 부모테이블의 해당 정보를 삭제합니다.
  • 참조 무결성 때문에 삭제가 불가능하므로 자식테이블의 외래키 제약조건을 제거한 후에 부모테이블의 정보를 삭제합니다.

       

       

       

제약 조건 비활성화/활성화

  • 테이블에서 제약조건을 삭제하지 않고도 일시적으로 적용시키지 않게 하는 방법
  • 오라클은 작업상황에 따라 다음 명령어를 통해 제약 조건을 비활성화 시키거나 다시 활성화 시킬 수 있습니다.

   

DISABLE CONSTRAINT

제약 조건을 일시적으로 비활성화 시킵니다.

ENABLE CONSTRAINT

비활성화된 제약조건을 해제하여 다시 활성화시킵니다.

   

   

제약 조건 비활성화/활성화 형식

ALTER TABLE 테이블명 DISABLE CONSTRAINT 제약조건명;

   

   

   

CASCADE 옵션

  • 부모 테이블과 자식 테이블 간의 참조 설정이 되어 있을 때, 부모 테이블의 제약 조건을 비활성화하면, 이를 참조하고 있는 자식 테이블의 제약 조건까지 함께 비활성화시켜 주는 옵션
  • 제약 조건의 삭제에도 활용되는 옵션으로 테이블의 제약조건을 삭제하면 이를 참조하고 있는 자식 테이블의 제약조건도 같이 삭제해 줍니다.