0

我的数据库中有两个表

Collection_ (#Id_Collection, Libelle_Collection, Id_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 值吗?

4

1 回答 1

0

尝试使用 SQL 查询执行此操作:

Update Collection_ SET  Id_Editeur_Editeur = NULL WHERE  Id_Editeur_Editeur IN 
(CommaSeperatedValuesToDelete);

然后,

Delete From Editeur  Where Id_Editeur IN (CommaSeperatedValuesToDelete);
于 2012-10-03T10:05:37.120 回答