在网上看到很多人对于递归表的删除是使用关系进行的,但是我在SqlServer2005 死活说我违反约束,郁闷啊,于是想到使用递归来做。一下是一张递归表
CREATE TABLE [dbo].[Tiku](
[TikuID] [int] IDENTITY(1,1) NOT NULL,
[TikuName] [varchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
[TikuParentID] [int] NOT NULL,
CONSTRAINT [PK_Tiku] PRIMARY KEY CLUSTERED
(
[TikuID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
好了,以下是我的存储过程
CREATE PROCEDURE [dbo].[DeleteTiku]
@TikuID int
AS
BEGIN
declare @TikuParentID int;
set @TikuParentID = -1;

select @TikuParentID=TikuID from dbo.Tiku where TikuParentID=@TikuID;
if ( @TikuParentID <> -1 )
exec DeleteTiku @TikuParentID;
delete from dbo.Tiku where TikuParentID=@TikuID;
END
执行就可以了。
在调整存储过程时候,发现好像递归的深度也是有限的——32。









好了,以下是我的存储过程













执行就可以了。
在调整存储过程时候,发现好像递归的深度也是有限的——32。