source

오라클이 제약 조건을 삭제/재작성하지 않고 캐스케이드 삭제를 수행하도록 강제하는 방법

manycodes 2023. 7. 10. 22:31
반응형

오라클이 제약 조건을 삭제/재작성하지 않고 캐스케이드 삭제를 수행하도록 강제하는 방법

저는 부모 테이블을 가지고 있는데, 그 테이블에는 12개의 자식 테이블이 그것을 참조하고 있습니다.이러한 하위 테이블에는 해당 하위 테이블을 참조하는 다른 하위 테이블이 있습니다.등등.

주 상위 테이블에서 행을 삭제하고 계속 계단식으로 연결해야 합니다.

제약 조건을 "ON CASCADE DELETE"로 만들기 위해 모든 곳에서 제약 조건을 삭제/재작성하는 것은 옵션이 아닙니다.

모든 항목을 검토하고 하위 행을 수동으로 삭제하는 것은 악몽입니다.

다른 방법은?

DELETE 문에는 계단식으로 만들기 위한 매개 변수가 없습니다.

사용자를 사용자로 지정할 수 있습니다.ON CASCADE DELETE또는 여러 개의 개별 삭제를 올바른 순서로 실행합니다.

테이블 구조를 조사하고 이를 기반으로 일련의 삭제 기준을 생성하는 '스마트 삭제' 절차를 작성할 수 있지만, 이는 별도의 삭제를 작성하는 것보다 더 많은 작업과 악몽이 될 수 있습니다.그리고 이것이 작동하기 위해서는 그러한 제약이 있어야 합니다. 현실적으로 항상 바람직한 것은 아닙니다.

저는 오라클에서 이러한 문제를 해결했습니다. 한 분기에서 다른 대상으로 데이터를 병합한 다음 원본 대상을 삭제하기 위해 일부러 수행한 응용 프로그램입니다.

https://sites.google.com/site/keytreechanger/Home https://sites.google.com/site/keytreechanger/Home/screenshots

견적서

예를 들어 이 오류가 발생하면 클라이언트 Pedrus Root(내부 키 표현 #R=111)는 Petrus Root(#R=1987)와 동일합니다.222 이하의 데이터를 111로 이동한 후 222 지점을 삭제합니다.
KTC는 모든 관련 데이터베이스 테이블에서 이 사례와 관련된 모든 데이터(그리고 해결해야 할 몇 가지 사례)를 스마트하게 수집합니다.
이 알고리즘은 필요한 곳만 검색하고 사용 가능한 모든 키 구성 요소를 사용합니다.
모든 데이터의 백업은 감사 목적으로 로컬로 유지 관리됩니다.로컬 리포지토리는 테이블/필드 정의의 변경사항을 수용하기 위해 투명하게 진화합니다.

파워 유저는 테이블/관계 트리를 시각적으로 검사하며, 모든 테이블의 데이터를 보고/인쇄/편집할 수 있으며, 예상되는 동작(컷, 컷, 페이스트 또는 완료)을 선택적으로 수정할 수 있습니다.
마지막으로 KTC는 이 특정 사례를 해결하기 위해 수백 줄의 삽입, 업데이트 및 수정 코드 삭제를 생성합니다. 다음으로 끝나는 적절한 순서로 나열됩니다.
합니다. 서 #rootTable은 파일 이름입니다. 여기서 #R=가 표시됩니다.
그리고 나서, 나는 사용자들과 온라인으로 코드를 적용합니다.

이 경우 필터는 라인을 제외한 모든 라인을 제거해야 합니다.

AFAIK 시장에는 이와 동등한 응용 프로그램이 없습니다.

언급URL : https://stackoverflow.com/questions/13881447/how-to-force-oracle-to-do-cascade-delete-without-dropping-recreating-constraints

반응형