2013-08-30 2 views
2

연결된 테이블에 대한 관계형 데이터베이스로 값을 삭제하는 방법은 무엇입니까? 영화 데이타베이스의관계형 테이블에서 값 삭제

예 : 영화 표 -> Movie_has_Genre 표 -> 장르 표

외래 키는 ID와 동일 어디 동영상 내가 Movie_has_Genre 테이블의 모든 행을 삭제할 것을 삭제하는 경우 영화 테이블에서.

무비 테이블에서 트리거를 사용해야합니까 (삭제시 관계형 테이블에서 삭제를 수행해야합니까?) 또는이를 처리 할 수있는 다른 내장 함수가 있습니까?

나는 그것을 막연하게하는 또 다른 방법이 있었지만 그것이 무엇을 부르는지를 기억할 수 없다는 것을 막연히 기억한다.

답변

2

계단식 삭제 문을 사용합니다. 이 구문은 다음과 같습니다이다 :

ALTER TABLE dbo.T2 
    ADD CONSTRAINT FK_T1_T2_Cascade 
    FOREIGN KEY (keyId) REFERENCES dbo.T1(keyId) ON DELETE CASCADE 

전체 구문은 다음과 같습니다 이미 같이 CASCADE 설정을 통해 자동으로이 작업을 수행하는 SQL 서버의 옵션이 있습니다 here

+0

삭제 캐스케이드 가끔 우발적 인 삭제로 이어질 수 있습니다. 나는 두 개의 쿼리를 실행하는 것을 좋아한다. 먼저 자식 테이블에서 데이터를 삭제 (바람직하게는 비활성화) 한 다음 부모 테이블에서 데이터를 삭제 (또는 비활성화)한다. – zedfoxus

+0

답변에 게시하는 데 유용한 정보로 들립니다. – dcaswell

+0

답변에서 내 추천을 자유롭게 사용하십시오. 당신은 간결하고 투 포인트 답변을 이미 내놓았습니다. – zedfoxus

0

.

이것은 매우 편리한 옵션이지만 데이터가 예기치 않게 손실 될 수 있으므로 외래 키 참조가있는 모든 테이블에이 옵션을 적용하지 않도록하십시오. 날씨를 철저히 분석하여 피해가 발생하지 않도록하십시오.

또 다른 옵션은 먼저 참조되는 테이블에서 시작하는 다중 delete 문을 사용하는 것입니다.