读书人

数据库中一条删除语句的有关问题

发布时间: 2013-01-26 13:47:03 作者: rapoo

数据库中一条删除语句的问题
用数据库保存一棵树的信息
如何运用存储过程删除节点下的所有子节点
表结构只有最基本的
id 父id
[解决办法]

USE test
GO


-->生成表tb

if object_id('tb') is not null
drop table tb
Go
Create table tb([id] smallint,[parentid] nvarchar(1))
Insert into tb
Select 1,N'0'
Union all Select 2,N'1'
Union all Select 3,N'1'
Union all Select 4,N'2'
Union all Select 5,N'2'
Union all Select 6,N'3'


SELECT * FROM tb
/*
id parentid
------ --------
1 0
2 1
3 1
4 2
5 2
6 3
*/

;WITH t AS (
SELECT * FROM tb
WHERE id=2
UNION ALL
SELECT a.* FROM tb AS a
INNER JOIN t ON a.parentid=t.id
)DELETE a FROM t INNER JOIN tb AS a ON t.id=a.id

/*
id parentid
------ --------
2 1
4 2
5 2
*/

SELECT * FROM tb

/*
id parentid
------ --------
1 0
3 1
6 3

*/

[解决办法]
引用:
只有一张表
我已经想出来了 谢谢
SQL code?1234567891011121314Create PROCEDURE [dbo].[proc_delnodes] @id int /*推荐将默认参数放在最后*/ AS declare @chicou intset @chicou=1 declare @delid varchar(5000) s……


一一的除的,最好用事控制。

读书人网 >SQL Server

热点推荐