DBに2つのテーブルがあります
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 であるため、エラーが発生することはわかっています。別の DB で Cascade ステートメントを使用していましたが、問題があったため、別の DB を使用したくありません。 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 値に変更する他の方法はありますか??