2013-05-15 3 views
0

데이터베이스에 두 개의 테이블이 있는데 트리거를 사용하여 계단식으로 삭제하려고합니다. 관계에서 삭제하는 계단식을 사용하지만,이 경우에는 테이블이 더 많아서 SQL Server에서주기를 생성하기 때문에 관계에서 삭제하는 캐스케이드를 설정하지 못하게합니다.캐스케이드에서 삭제하려고 할 때 트리거에 오류가 발생하는 이유는 무엇입니까?

그래서 관계에서 삭제를 계단식으로 설정할 수없는 테이블의 레지스터를 삭제하기위한 트리거를 만들고 싶습니다. 외부 키의

CREATE TRIGGER trg_myTrigger 
    ON Componentes 
    AFTER DELETE 
AS 
BEGIN 
    -- SET NOCOUNT ON added to prevent extra result sets from 
    -- interfering with SELECT statements. 
    SET NOCOUNT ON; 

    -- Insert statements for trigger here 
    Delete from mytable2 where IDParentFromTable1 IN(select deleted.IDtable1 from deleted) 
END 
GO 

그러나 내가 얻을 오류 :

나는이 트리거를 사용합니다.

정말이 오류가 나는 이유를 모르겠다.

감사합니다.

답변

2

트리거가 DELETE 후에 트리거되므로 트리거가 실행되기 전에 외래 키 오류가 발생합니다.

당신은 다음 mytable2 COMPONENTES을 삭제

  • 저장 프로 proceure 중 하나를 사용할 필요가
  • INSTEAD OF
+0

마지막으로 거래

  • 두 별도의 삭제 (트리거 전) I 삭제 트리거의 istead를 사용하십시오. 정말로 나는 inestad의 inestad를 알고 있었다. 그러나 지금 나는 그것이 말하는 방법을 기억하지 않고있다. 감사. –

  • 관련 문제