循環のない親子の 2 表
子の表が親の表を参照するだけの、輪のない素直な定義の例です。循環がないときに、その旨を情報で返し、表を出さないことを確かめます。
入力
SQL
CREATE TABLE p (id int PRIMARY KEY); CREATE TABLE c (id int PRIMARY KEY, p_id int REFERENCES p (id));
結果
エラー 0 件・警告 0 件・情報 1 件
指摘(エラー・警告・情報)
- 情報 全体 外部キーの循環は見つかりませんでした。
| 表の数 | 2 個 |
|---|---|
| 外部キーの数 | 1 本 |
| 複数の表にまたがる循環 | 0 組 |
| 自己参照 | 0 表 |
循環の候補
循環候補はありません。
検算(この結果になる理由)
辺は c → p の 1 本だけで、p は何も参照しないため輪になりません。循環の候補はなく、「循環は見つかりませんでした」という情報が 1 件出て、出力は循環候補なしの 1 行です。
判定の根拠は仕様と根拠に、仕様の出典とともにまとめています。自分の入力で試すにはツールをお使いください。
このツールの制約
- 完全な SQL の構文解析はしません。貼られていない表の参照は先をたどれず、循環を見逃すことがあります(その旨を情報で示します)。
- 「候補」の検出です。業務の流れ(どの表に先にデータが入るか)までは判定しません。
- 自己参照(階層構造の親子)は多くの設計で普通の形のため、複数の表にまたがる循環とは区別して情報で示します。
- CREATE TABLE ... AS などの列定義のない形は読みません。ALTER TABLE は ADD [CONSTRAINT] FOREIGN KEY だけを読みます。
ご利用にあたって
- 結果は字句の読み取りにもとづく確認で、実際のデータベースでの解釈を保証するものではありません。
- ドキュメントは PostgreSQL License で公開されています。このサイトはその内容を要約して参照しており、転載はしていません。