본문 바로가기

ORACLE/문제해결

테이블 truncate 중 ORA-02266, ORA-02297

728x90
반응형

테이블 truncate 중 ORA-02266 에러가 발생하였다.

 

ora-02266 :unique/primary keys in table referenced by enabled foreign keys

 

다른 테이블에서 활성화된 외래 키가 참조하는 고유 키 또는 기본 키가 있는 테이블을 참조함.

위 작업을 수행하기 전에 테이블에서 다른 테이블의 외래 키 제약 조건을 비활성하여 해결할 수 있다.

제약 조건을 비활성화하여 검증 단계를 무시하는 것이다.

 

해당 테이블의 제약조건을 dba_constraints 뷰에서 확인할 수 있다.

 

SELECT * FROM DBA_CONSTRAINTS
WHERE TABLE_NAME = '테이블명'
AND OWNER = '스키마 명';

 

 

외래 키 제약 조건을 비활성화한다.

ALTER TABLE  스키마명.테이블명 DISABLE CONSTRAINT 제약조건명;

 

 

이 때 ORA-02297 에러가 발생할 수 있다.

 

ora-02297 :cannot disable constraint (string.string) - dependencies exist

 

테이블에 종속된 외래 키가 있기 때문에 제약조건을 DISABLE 할 수 없다.

PK 가 FK로 참조되고있을 때 이런 에러가 발생할 수 있다.

 

 

CASCADE 옵션을 사용하여 비활성화가 가능하다.

 

ALTER TABLE  스키마명.테이블명 DISABLE CONSTRAINT 제약조건명 CASCADE;

 

CASCADE 옵션은 제약 조건을 삭제할 때 종속된 개체에 대한 작업을 자동으로 수행해준다.DISABLE CASCADE 옵션 사용 시 이 테이블이 참조되고있는 FK도 같이 비활성화가 된다.

 

이때 다시 제약조건 ENABLE 이 필요한 작업이라면 FK도 함께 ENABLE 해주어야한다.  

728x90
반응형