2011-11-27 48 views
3

我有一個名爲Friends有以下的列的關係,梯級上有兩個FK刪除表相同的表

User1ID 
User2ID 
Since 

User1IDUser2ID是一組關係中的主鍵。它們也是引用表用戶的外鍵。現在我想添加一個ON CASCADE DELETE,這樣當表Users中的用戶被刪除時,表Friends中的相應行也會被刪除。但是,MS SQL Server不允許我添加該約束。

任何想法,關於如何修改表,以完成該任務?

回答

5

你不能有多個或圓形級聯路徑:你想要做什麼(比如一個CASCADE NULL和其他CASCADE DELETE)

我會使用一個存儲過程從Friends先刪除它變得模糊在一個交易然後從Users(在TRY/CATCH當然要處理錯誤)

BEGIN TRAN 
    DELETE Friends WHERE User1ID = @UserID; 
    DELETE Friends WHERE User2ID = @UserID; 
    DELETE Users WHERE UserID = @UserID; 
COMMIT TRAN 
+0

非常感謝,我相信這種方法好得多。再次感謝!! – ppoliani