2014-04-28 3 views
0

데이터베이스에 30 개의 테이블이 있으며 모두 기본 및 외래 키 관계를 통해 서로 관련되어 있습니다. 문제는 저장 프로 시저를 통해 레코드를 삭제하려고하면 기본/외래 키 관계로 인해 삭제되지 않는다는 것입니다. 테이블을 삭제하려면 어떻게해야합니까? 테이블이 너무 많으면 상호 연결됩니다.기본/외래 키 관계가있는 테이블을 삭제할 수 없습니다.

ALTER PROCEDURE [dbo].[DeleteRegions_SP] 

    @RegionID smallint 

AS 
BEGIN 

    Begin Try 

    Delete from Regions where RegionID = @RegionID 
    End Try 
    Begin Catch 
    Select ERROR_MESSAGE() as ErrorMessage 
    End Catch 
END 

답변

0

으로 테이블을 삭제하기 전에 외래 키가있는 테이블을 삭제해야 :

ON DELETE CASCADE 

가 그러면 삭제할 레코드에 따라 레코드가 삭제됩니다. FK 필드가 당신에 대해 친 dafault 인

ON DELETE RESTRICT 

를 NULL로 설정합니다

ON DELETE SET NULL 

.

TSQL도 유용 할 수있는

ON DELETE SET DEFAULT 

할 수 있습니다.

당신을위한 해결책은 하나도 없습니다 (특히 CASCADE는 아닙니다)!

각 FK에 대해 올바른 조항을 결정해야합니다!

데이터베이스 디자인은 예술이다 ..

이 답변이 테이블을 기록하지 삭제에 관한 것입니다; 테이블을 삭제하려는 경우 우선 테이블에 의존하는 FK 관계를 들어야합니다.

0

당신은 세 가지 방법으로 SQL 취급이 매우 정상적인 상황이있는 기본 키

관련 문제