부모테이블 수정/삭제시 자식테이블 자동으로 수정/삭제
A,B,C라는 테이블이 있고 서로 연관 관계를 맺어놓습니다.
C는 B를 참조(C의 상위 부모테이블 B, B의 하위 자식테이블 C)
다시 B는 A를 참조(B의 상위 부모테이블 A, A의 하위 자식테이블 B)
A > B > C 순서대로 상위 격에 있다고 생각하시면 될것 같습니다.
3개의 테이블에서 레코드 값을 삭제하는 방법은
delete C => B => A 순서대로 관련 테이블을 삭제해야겠죠?
아니면 개체참조 오류가뜰테니깐요.
하지만 이같은 작업을 A테이블만 삭제해도 하위 자식테이블이 자동으로 삭제되는 방법이 있습니다.
바로 알아볼끼요?
삭제할수 있는 방법은
FK의 관계를 설정할 경우 CASCASE DELETE 를 설정하시게 된다면
A 테이블에서 삭제하면 B 테이블에 맞는 데이터가 삭제되게 할 수 있습니다.
아래처럼 키를 정의하실때 옵션을 사용할 수 있습니다.
SQL문)
ALTER TABLE BTable
ADD CONSTRAINT FK_B_1 FOREIGN KEY (CustomerId)
REFERENCES ATable (CustomerId) ON DELETE CASCADE
GO
ADD CONSTRAINT FK_B_1 FOREIGN KEY (CustomerId)
REFERENCES ATable (CustomerId) ON DELETE CASCADE
GO
혹은 GUI방식으로도 변경이 가능합니다. 한번 알아볼까요?
테이블 - 디자인 - 관계 순서로 들어가 봅니다.
부모테이블과 자식테이블의 관계에서 테이블 디자이너 - INSERT 및 UPDATE 사양을 펼친후에 "삭제 규칙" 을 "계단식 배열"로 변경하게되면 부모테이블의 컬럼을 삭제하면 참조된 자식테이블의 데이터도 함께 삭제되는것을 확인할수 있습니다.
위에서 봐서 알겠지만 수정은 "업데이트 규칙"을 동일하게 설정하면 같은 효과를 볼수 있습니다.
참조 : http://egloos.zum.com/sweeper/v/3005563
원본 : https://m.blog.naver.com/sky0210love/20148816689