SQL Server の同じテーブル間に多対多の関係を作成しようとしています。
Object
列ObjectId
とを持つテーブルが 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 でも機能します (したがって、ストアド プロシージャはありません)。または、この関係をモデル化するためのより良い方法はありますか?