我試圖運行此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'.
我檢查有沒有公司ParentID = CompanyID。我很好奇爲什麼我的刪除聲明沒有過濾掉那些會導致這個約束被破壞的公司。
我爲你寫的第二個查詢獲得0行,這讓我感到困惑。如果是這種情況,那麼約束不會是問題,0行將受到影響。 – Dave
零行表示任何有1310以上的companyid都有companyID,它們也是parentID的。您可以嘗試沒有子查詢的select語句來驗證companyid是否存在大於1310. – RThomas
您可以使用我們在此討論的sql的特定風格來更新您的問題。 TSQL,PLSQL,Postgres等等 – RThomas