我的数据库中有两个表
Collection_(#Id_Collection,Libelle_Collection,Id_Editeur_Editeur)
Editeur(#Id_Editeur,Libelle_Editeur)
当我想从“Editeur”表中删除一些记录时,它给了我这个错误:
DELETE语句与REFERENCE约束冲突 “FK_Collection_Id_Editeur_Editeur”。冲突发生在数据库中 “Gestion_bib”,表“dbo.Collection_”,列“Id_Editeur_Editeur”。 声明已经终止。
我知道错误,因为Collection_表中的外键是Editeur表中的PK,我在另一个数据库中使用了Cascade语句,但我遇到了问题,所以我不喜欢使用它我使用另一种方法使用ADO.Net:
for (int i = 0; i < myClass.ds.Tables["Collection_"].Rows.Count; i++)
if (valToDelete == myClass.ds.Tables["Collection_"].Rows[i][2].ToString())
myClass.ds.Tables["Collection_"].Rows[i][2] = DBNull.Value;
SqlCommandBuilder cmb = new SqlCommandBuilder(adapter);
adapter.Update(myClass.ds, "Editeur");
但是当我处理包含许多FK的表时,这种方法变得复杂。
那么,如果我删除了包含PK的表,那么还有其他任何方法可以将FK更改为Null值吗?
答案 0 :(得分:0)
尝试使用SQL Query执行此操作:
Update Collection_ SET Id_Editeur_Editeur = NULL WHERE Id_Editeur_Editeur IN
(CommaSeperatedValuesToDelete);
然后,
Delete From Editeur Where Id_Editeur IN (CommaSeperatedValuesToDelete);