2012-03-01 1 views
0

아래와 같이 "외래 키 제약 조건이있는 테이블 잘라 내기"에 대한 사양을보고 싶습니다. 누구는 정의 된 곳을 알고 있습니까? 당신이 에 당신이 절단하려고하는 테이블을 참조하는 외래 키 제약 조건이있는 경우 마이너스 측면에서 오라클 사양 또는 SQL? : 외래 키 제약 조건이있는 테이블 잘라 내기

은이 작동하지 않습니다 - 참조 테이블 안에 데이터가없는 경우에도! 외부 키 검사가 DML이 아닌 DDL로 수행되기 때문입니다. 에 의해 외래 키 제약 조건을 일시적으로 비활성화 할 수 있습니다. http://www.orafaq.com/faq/difference_between_truncate_delete_and_drop_commands

답변

2

당신은 Oracle's truncate documentation의 테이블 섹션을 절단에 제한에서 네 번째 총알을 의미합니까?

사용 가능한 외래 키 제약 조건의 부모 테이블을자를 수 없습니다. 테이블을 절단하기 전에 제한 조건을 사용 불가능하게해야합니다. 단, 무결성 제약 조건이 자체 참조 인 경우 테이블을자를 수 있습니다.

+0

이것은이에요! 그러나 명시 적으로 "데이터 없음"조건에 대해서는 언급하지 않습니다. 그걸 알면 저를 가르쳐주세요. – zono

+0

@yusaku - it *는 '자식 테이블에 데이터가 없다면'이라고 말하지 않습니다. 그냥 할 수없는 담요 구문입니다. 그것은 강력하게, IMO는 "데이터가 없다고하더라도"* 의미한다고 암시합니다. orafaq 링크가 말한 것처럼, 그것은 DDL 선언문이기 때문입니다. 잘라내는 테이블의 데이터를보고, 테이블을 참조하는 테이블을 신경 쓰지 말고, DML을 수행하고 자연을 변경해야하며 효율성이 떨어지는 이점이 있습니다. 순수한 DDL로는 그렇지 않습니다. 모든 데이터를 검색해야합니다 (데이터 사전 자체 외부). –

관련 문제