오늘 데이터베이스 SQL 실습을 하다가 다음과 같은 오류를 만났다.
ORA-02292: integrity constraint (~~~.XXX) violated - child record found
데이터를 업데이트 하도록 했는데, 해당 컬럼을 참조하고 있는 다른 테이블의 컬럼들이 있기 때문에 오류가 난 것이다.
이럴 경우 제약 조건을 설정을 해줘야 오류가 안나는데 설정이 안 되어 있어서 오류가 났다.
처음에는 ON UPDATE CASCADE로 해결을 하려고 했다.
그런데 자꾸 오류가 났다. ON DELETE CASCADE를 추가 했을 때는 멀쩡히 잘 추가가 되었었는데...
그래서 검색을 해보니, mySQL에서는 on update cascade가 되지만 오라클에서는 안된다고 한다.
이 경우 해결 방법이 두개가 있는데, 하나는 해결 방법이라고 할수도 없다.
1) 오류를 일으키는 테이블 간의 모든 참조 관계를 삭제한다.
-> 당연히 안된다.
2) 연쇄적으로 변경 내용을 적용하도록 TRIGGER를 만든다. 설정 한다.
-> 이게 가장 좋은 방법이다. 코드는 추후에 첨부하여 좀 더 자세히...
혹시 어떻게 해결하셨나요?