gpt4 book ai didi

sql - 如何删除父子记录

转载 作者:行者123 更新时间:2023-12-04 06:52:04 26 4
gpt4 key购买 nike

我有一个包含 LibraryID 和 LibraryParentID 的表。

LibraryID int Unchecked
Name varchar(50) Checked
Description varchar(200) Checked
LibraryLevel int Checked
LibraryParentID int Checked
LibraryTypeID int Unchecked

我想写一个 sql 来删除当前选择的父级和所有子级记录,我该怎么做?

最佳答案

在外键上级联删除
这是引用http://msdn.microsoft.com/en-us/library/aa933119(SQL.80).aspx

编辑:

评论就在下面。

“由单个 DELETE 或 UPDATE 触发的一系列级联引用操作必须形成一个不包含循环引用的树。在由 DELETE 或 UPDATE 产生的所有级联引用操作的列表中,任何表都不能出现超过一次。”引用自 MSDN

但这里有一些 tsql 会有所帮助

Create Procedure RecursiveDelete(
LibraryId Int )
AS
Declare @CursorLibraryID Int;

Declare myCursor Cursor FOR
SELECT LibraryParentID from Table;

Open myCursor;

Fetch Next
From MyCursor
Into @CursorLibraryID

While (@@Fetch_Status = 0) BEGIN
Exec RecursiveDelete(@CursorLibraryID)
Delete From Table
Where LibraryID = @CursorLibraryId
Fetch Next
From MyCursor
Into CursorLibraryID

END

好吧,它迟到了,我累了,所以如果语法错误,我要道歉。但这里的想法是你有 child 、 parent 、祖 parent 、曾祖 parent ……等等,所以你必须递归删除它们。

关于sql - 如何删除父子记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2971378/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com