gpt4 book ai didi

sql - 从具有相同表外键约束的表中删除

转载 作者:行者123 更新时间:2023-12-01 12:50:21 26 4
gpt4 key购买 nike

我正在尝试运行此 sql server 语句:

delete C from Company C, Company D where C.CompanyID > 1310 AND C.CompanyID != D.ParentID

我收到以下 sql 错误:

The DELETE statement conflicted with the SAME TABLE REFERENCE constraint "FK_Company_Company". The conflict occurred in database "DevelopmentDB", table "dbo.Company", column 'ParentID'.



我查了一下,没有父 ID = CompanyID 的公司。我很好奇为什么我的删除语句没有过滤掉会导致此限制被破坏的公司。

最佳答案

您是否使用类似的方法验证了尝试的结果,以确保您尝试删除的内容是您实际打算删除的内容?

select C.<field list> from Company C, Company D 
where C.CompanyID > 1310 AND C.CompanyID != D.ParentID

您还可以使用子查询方法尝试删除语句。它可能更容易从逻辑上确定您正在运行的查询是您真正想要的。

但是,我始终建议先使用 select 进行测试以进行验证。

所以运行(如果这是你想要的结果 - 如果不是,请修改):
Select <field list> FROM Company WHERE CompanyID > 1310 
AND CompanyID NOT IN
(SELECT ParentID FROM Company)

在运行之前(同样,这只是一个例子):
DELETE Company WHERE CompanyID > 1310 
AND CompanyID NOT IN
(SELECT ParentID FROM Company)

关于sql - 从具有相同表外键约束的表中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12960661/

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