7

SQL Server の同じテーブル間に多対多の関係を作成しようとしています。

ObjectObjectIdとを持つテーブルが 1 つありますName

この関係は次の規則に従います。

  • 子供は多くの親を持つことができます
  • 親は多くの子供を持つことができます
  • ObjectA を ObjectB の子にすることができ、ObjectB を ObjectA の子にすることができます。
  • ただし、オブジェクトはそれ自体の直接の子になることはできません

ObjectRelationそこで、列ParentIdを持つ 2 番目のテーブルを作成しますChildId。もちろん、これらの関係をカスケードによって削除したいと考えています。

しかし、SQL Serverでこれを試すと、エラーが発生します

テーブル 'tblADMembership' に FOREIGN KEY 制約 'FK_ObjectRelation_Object1' を導入すると、サイクルまたは複数のカスケード パスが発生する可能性があります。ON DELETE NO ACTION または ON UPDATE NO ACTION を指定するか、他の FOREIGN KEY 制約を変更します。

SQL Server Compact では、

参照関係は、許可されていない循環参照になります。

私はいくつかの調査を行い、これらのエラーが発生する理由を理解していますが、これを回避する方法はありますか SQL Server Compact でも機能します (したがって、ストアド プロシージャはありません)。または、この関係をモデル化するためのより良い方法はありますか?

4

2 に答える 2

2

私も同様の問題に遭遇しました....外部キーを削除してしまいました。循環削除ロジックがコードにプッシュされました。

于 2012-11-02T11:06:34.467 に答える