gpt4 book ai didi

c# - 从 SQL 数据库中删除未连接的节点

转载 作者:太空宇宙 更新时间:2023-11-03 18:20:38 26 4
gpt4 key购买 nike

我正在研究具有公司层次结构的树结构。所有数据都存储在 SQL Server 数据库中。

数据库有两列ID和父节点ID(都是varchar(5))。

现在,当我删除一个节点时,该节点的所有子节点(及其子节点)都将保留在数据库中——未连接。我应该如何删除这些?

编辑:我正在使用 https://www.codeproject.com/Articles/18378/Organization-Chart-Generator生成图表。

最佳答案

这里你需要两样东西,

  • 首先,您需要一个系统来防止删除具有 children 。
  • 其次,您需要一个删除主控及其所有子级的过程。

第一个是必要的,因此没有人可以使用除正确程序以外的任何其他方式删除 master。

这是一个如何设置这样一个系统的例子

create table test (
id int not null identity,
name varchar(10),
parentid int null,

constraint pk_id primary key (id),
constraint fk_pid foreign key (parentid) references test (id)
)

insert into test (name, parentid)
values ('master', null), ('child1', 1), ('child2', 1), ('child3', 3)

现在,当您删除例如第一行 (name=master) 时,sql server 将停止您,并返回一个错误,指出外键 fk_pid 被违反。
换句话说,只要它还有 child ,就没有人可以再移除主人。

现在对于可以移除一个主人及其所有 child 的程序,您可以查看其他答案并选择您最喜欢的一个。

关于c# - 从 SQL 数据库中删除未连接的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56679898/

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