gpt4 book ai didi

c# - SQL DELETE(级联 DELETE 与 TRIGGERS 与 "Manual"-DELETE)

转载 作者:太空宇宙 更新时间:2023-11-03 13:58:00 27 4
gpt4 key购买 nike

我目前正在使用 SQL Server Management Studio 2005,我遇到了一些问题,但首先是我的 DB 架构的摘录(重要的):

imghack link to the image

我想从 test 表中删除它连接到(由其组成)的所有内容。

问题是,我不能再更改数据库(而且真的不想,因为使用它的程序已经太大了)。

当我尝试删除 test 表中的条目并且为相应的外键关系打开级联 DELETE 时,DBMS 不允许我删除,因为它检测到某种循环(可能是由 contr_tray 表引起的)。

当尝试通过我的程序手动删除条目时(使用 SqlCommandBuildercmd.ExecuteNonQuery()) 我收到此错误:

The DELETE statement conflicted with the REFERENCE constraint ...

如果我使用触发器向下“级联”删除过程,也会发生同样的情况。

有人可以帮我吗?谢谢!

P.S.:我还尝试创建一个连接表,其中属于 subset 表的所有列都将简单地为 NULL,其中 contr_tray 表已连接到复制表并让 SqlCommandBuilder 处理这个,但我的 SQL 技能似乎达不到标准(即我没有正确使用 SQL 语法)[然后我还可以获得所有 ID 的不同值我需要...]

如有任何帮助,我们将不胜感激,并在此先致谢。

最佳答案

SQL Server(烦人!)不支持菱形 依赖项上的 ON CASCADE DELETE。在您的情况下,Block 位于“菱形”的底部,因此 SQL Server 无法自动将父删除级联到它。

由于您没有使用标识关系,因此您需要先自上而下选择以查找所有要删除的 ID,然后执行实际的 DELETE 自下而上(以避免违反 FK过程中)。

您应该能够将此逻辑封装在一系列 INSTEAD OF DELETE 触发器中 - 您的触发器到底有什么问题?

关于c# - SQL DELETE(级联 DELETE 与 TRIGGERS 与 "Manual"-DELETE),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11545722/

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