0

ノード ID と親ノード ID の 2 つの列を含むテーブルがあります。この表はグラフを表しています。ツリーを表現したいので、グラフでサイクルを形成する行の挿入を無効にする必要があります。

4

1 に答える 1

1

サイクルを作成する行を一括で挿入できるため、次は機能しませんhttp://sqlfiddle.com/#!12/ea0cd/7

ストアド プロシージャを介した挿入アクセスを一度に 1 行だけ許可することで、この問題を回避できます。

自己参照を使用してテーブルを作成しますParentId

Create Table Tree (
  Id int not null primary key,
  ParentId int foreign key references Tree(Id) -- might need to add constraint afterwards
);

テーブルへの更新は許可せず、挿入と削除のみを許可します。更新なしでサイクルを作成することはできません。

ツリー ノードに他のデータがある場合は、このために別のルック アサイド テーブルを作成します。

Create Table Node (
  Id int not null primary key,
  data1 varchar(10),
  constraint FK_Tree Foreign Key (Id) References Tree (Id)
);
于 2012-12-09T21:10:38.507 に答える