2013-09-16 1 views
3

나는 다음과 같은 예를 가지고 있다면 내가 "삭제 캐스케이드에"힘든 시간 인식하지 못했습니다에서 행을 삭제 :"삭제 캐스케이드에"만약 자식 테이블

테이블 X를 만들

(ID INT 기본 키를, name char (10));

테이블 만들기 Y (입찰가 기본 키, 보조 캐스케이드 참조 A (id));

X는 하나의 행 (111 '마이크')

Y는 두 개의 행 (1000, 111), (2000, 111) ** 포함 포함

I 만약 삭제 행 (2000,111)에 table Y 무슨 일이 일어날까요?

행이 삭제되었거나 부모 테이블에 대한 참조로 인해 삭제할 수 있습니까?

덕분에

답변

3

삭제 될 것이고 아무 것도 일어나지 않을 것입니다. 계단식 삭제는 참조 된 테이블에서 참조하는 테이블로 이동합니다. 그래서 테이블 X에 대한 삭제는 테이블 y에 대한 삭제가 캐스케이드되지만 테이블 y에 대한 삭제는 테이블 x에 대한 영향을 미치지 않습니다.

2

아무것도 당신이 삭제됩니다 참조 테이블 Y에 테이블 X에서 행을 행을 삭제할 경우에만 발생하지 않습니다.

2

ON 캐스케이드 옵션 삭제는 하위 테이블에서 삭제를 수행하면 아무 효과가 없습니다. 이 옵션은 부모 테이블의 행을 삭제할 때 데이터베이스 서버는 하위 테이블의 해당 행 (외래 키)과 연관된 모든 행을 삭제하도록 지정하는 데 사용됩니다. 계단식 삭제 기능의 주요 이점은 삭제 작업을 수행하는 데 필요한 SQL 문의 수량을 줄일 수 있다는 것입니다.