親を指す自己参照

同じ表の中で親の id を参照する階層構造の例です。複数表の循環ではなく自己参照として、情報で示されることを確かめます。

入力

SQL

CREATE TABLE t (id int PRIMARY KEY, parent_id int REFERENCES t (id));

結果

エラー 0 件・警告 0 件・情報 1 件

指摘(エラー・警告・情報)

  • 情報 1 行目 t は自分自身を参照しています(自己参照)。階層構造(親子)では普通の形です。参照列が NULL を許可すれば、最上位の行を先に入れられます。
表の数1 個
外部キーの数1 本
複数の表にまたがる循環0 組
自己参照1 表

循環の候補

循環の候補
#循環に含まれる表参照の向き(子 → 親)緩和の見込み
1t(自己参照)t(parent_id) → t緩和できる可能性あり: t(parent_id) → t(列が NULL 許可)

検算(この結果になる理由)

parent_id は同じ表 t の id を参照するので、t から t への辺ができ自己参照です。parent_id は何も付いておらず NULL を許可するため、最上位の行を先に入れられます(CREATE TABLE 文書)。情報が 1 件出ます。

判定の根拠は仕様と根拠に、仕様の出典とともにまとめています。自分の入力で試すにはツールをお使いください。

このツールの制約

ご利用にあたって

  • 結果は字句の読み取りにもとづく確認で、実際のデータベースでの解釈を保証するものではありません。
  • ドキュメントは PostgreSQL License で公開されています。このサイトはその内容を要約して参照しており、転載はしていません。

ほかの入力例