2009-10-08 4 views
0

예를 들어 테이블 A가 있다고 가정하면 테이블 A의 기본 키에 외래 키가있는 테이블 B-Z가 있습니다. 그런 다음 B-Z의 기본 키 제약 조건에서 테이블에 대한 외래 키 제약 조건을 가진 일부 테이블이있을 수 있습니다. 각 테이블에서 명시 적으로 삭제하거나 각 외래 키에 ON CASCADE 제약 조건을 추가 할 필요없이 테이블 A와 A를 참조하는 모든 테이블 (또는 A를 참조하는 테이블 참조)을 제거하는 쉬운 방법이 있습니까?oracle에서 많은 참조가있는 테이블을 지우려면 어떻게합니까?

이것은 주로 테스트 용이며 프로덕션 환경에서는 사용되지 않습니다. 필자는 전체 스키마를 삭제하고 처음부터 다시 시작하지만, 모든 테스트에서 (스키마를 작성하는 데 걸리는 시간을 고려하여) 간단히 실행 가능하지는 않습니다.

+0

CASCADE를 사용할 수없는 이유가 있습니까? – Gandalf

+0

모든 외래 키에 CASCADE를 추가하지 않아도 되겠습니까? 솔직히, 만약 내가 그 접근법을 사용한다면 왜 모든 테이블에서 삭제하지 않을까요? –

+0

왜 모든 테이블에서 삭제하지 그래? – Rob

답변

1

이 작업을 수행하는 가장 효율적인 방법은 모든 FK를 삭제하고 테이블을 자르고 FK를 다시 작성하는 것입니다.

+0

그러나 그는 자식 테이블의 특정 행이 수정 될 때까지 모든 FK를 다시 만들 수 없습니다. 나는 그가 자식 테이블에서 일부 행만 제거하려고한다고 생각한다. – Rob

+0

"A와 (또는 A를 참조하는 테이블을 참조하는) 모든 테이블을 지우는 구문"에 대한 대답을 기반으로했습니다. 이는 자식 테이블을 완전히 비워야한다는 것을 의미한다고 가정합니다. 잘. – dpbradley

관련 문제