Sql 如何应用级联删除
我的delete-Tsql在删除员工记录时有问题,有人能帮我解决吗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
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
“级联删除”从何而来?级联删除从何而来?