Sql 如何应用级联删除

Sql 如何应用级联删除,sql,tsql,sql-server-2008-r2,Sql,Tsql,Sql Server 2008 R2,我的delete-Tsql在删除员工记录时有问题,有人能帮我解决吗 ALTER PROCEDURE [dbo].[Delete_Resource] @ResID INT, @UserID uniqueidentifier AS BEGIN DELETE FROM [ideaPark_DB].[dbo].[Topics_Resources] WHERE [ideaPark_DB].[dbo].[Topics_Resources].ResourceID = @ResI

我的delete-Tsql在删除员工记录时有问题,有人能帮我解决吗

ALTER PROCEDURE [dbo].[Delete_Resource]
@ResID INT,

@UserID uniqueidentifier  

AS
BEGIN

    DELETE FROM [ideaPark_DB].[dbo].[Topics_Resources]
      WHERE [ideaPark_DB].[dbo].[Topics_Resources].ResourceID =  @ResID



    DELETE FROM [ideaPark_DB].[dbo].[Likes]
      WHERE [ideaPark_DB].[dbo].[Likes].resourceID = @ResID

     declare @BookmarkID  INT;
     SET  @BookmarkID  =  (SELECT [ideaPark_DB].[dbo].[Bookmarks].id  FROM [ideaPark_DB].[dbo].[Bookmarks] WHERE [ideaPark_DB].[dbo].[Bookmarks].resourceID = @ResID and Bookmarks.userID = @UserID)
     DELETE FROM [ideaPark_DB].[dbo].[Bookmarks]
      WHERE [ideaPark_DB].[dbo].[Bookmarks].resourceID = @ResID

      DELETE FROM [ideaPark_DB].[dbo].Bookmarks_Groups 
      WHERE Bookmarks_Groups.bookmarkID = @BookmarkID

     delete FROM [ideaPark_DB].[dbo].[Resources_Relationship]
      WHERE [ideaPark_DB].[dbo].[Resources_Relationship].fk_parent = @ResID


    DELETE FROM [ideaPark_DB].[dbo].[Skills_Resources]
      WHERE [ideaPark_DB].[dbo].[Skills_Resources].ResourceID = @ResID




     DELETE FROM [ideaPark_DB].[dbo].[Resources]
      WHERE [ideaPark_DB].[dbo].[Resources].Id  = @ResID 

END
错误


发生严重错误。DELETE语句与引用约束“FK_资源\关系\资源1”冲突。冲突发生在数据库“ideaPark_DB”、表“dbo.Resources_Relationship”、列“fk_child”中。声明已终止-

在最后从
资源中删除之前添加以下内容

delete FROM [ideaPark_DB].[dbo].[Resources_Relationship]
WHERE [ideaPark_DB].[dbo].[Resources_Relationship].fk_chid = @ResID

您的
Resources\u关系
表有两个FK返回到
Resources
表,您只处理了其中一个。

在最后从
资源中删除之前添加以下内容

delete FROM [ideaPark_DB].[dbo].[Resources_Relationship]
WHERE [ideaPark_DB].[dbo].[Resources_Relationship].fk_chid = @ResID
您的
Resources\u关系
表有两个FK返回到
Resources
表,您只处理了其中一个问题。

我看到两个问题:

第一:

DELETE FROM [ideaPark_DB].[dbo].[Bookmarks]
WHERE [ideaPark_DB].[dbo].[Bookmarks].resourceID = @ResID

DELETE FROM [ideaPark_DB].[dbo].Bookmarks_Groups 
WHERE Bookmarks_Groups.bookmarkID = @BookmarkID
我会更改这些删除的顺序,因为bookmark\u groups是书签和组之间的中间表

第二点:

在此删除之后:

DELETE FROM [ideaPark_DB].[dbo].[Resources_Relationship]
WHERE [ideaPark_DB].[dbo].[Resources_Relationship].fk_parent = @ResID
您必须添加以下内容:

DELETE FROM [ideaPark_DB].[dbo].[Resources_Relationship]
WHERE [ideaPark_DB].[dbo].[Resources_Relationship].fk_child = @ResID
我看到两个问题:

第一:

DELETE FROM [ideaPark_DB].[dbo].[Bookmarks]
WHERE [ideaPark_DB].[dbo].[Bookmarks].resourceID = @ResID

DELETE FROM [ideaPark_DB].[dbo].Bookmarks_Groups 
WHERE Bookmarks_Groups.bookmarkID = @BookmarkID
我会更改这些删除的顺序,因为bookmark\u groups是书签和组之间的中间表

第二点:

在此删除之后:

DELETE FROM [ideaPark_DB].[dbo].[Resources_Relationship]
WHERE [ideaPark_DB].[dbo].[Resources_Relationship].fk_parent = @ResID
您必须添加以下内容:

DELETE FROM [ideaPark_DB].[dbo].[Resources_Relationship]
WHERE [ideaPark_DB].[dbo].[Resources_Relationship].fk_child = @ResID
“级联删除”从何而来?级联删除从何而来?