再帰的ビュー定義の繰り返し文内に完全外部結合をコーディングすることはできません。
完全外部結合は、再帰的ビュー定義のシード文内で制約なしで使用できます。
最初の再帰的ビュー定義は、完全外部結合の正しい使い方を示しており、その部分は太字で強調されています。この使い方が有効なのは、完全外部結合がビュー定義のシード文内にコーディングされているからです。
CREATE RECURSIVE VIEW rec (f1, mycount) AS (
SELECT a1, 0 AS mycount
FROM nonrec1 FULL OUTER JOIN nonrec2 ON nonrec1.a1 = nonrec2.a2
UNION ALL
SELECT a2, mycount + 1
FROM nonrec, rec
WHERE rec.mycount <= 100);
2番目の再帰的ビュー定義は、完全外部結合の無効な使い方を示しており、その部分は太字で強調されています。この使い方が無効なのは、ビュー定義の繰り返し文の再帰的関係が完全外部結合の内部関係として使用されているからです。
CREATE RECURSIVE VIEW rec (f1, mycount) AS (
SELECT a1, 0 AS mycount
FROM nonrec
UNION ALL
SELECT a2, mycount + 1
FROM nonrec FULL OUTER JOIN rec ON nonrec.a1 = rec.f1
WHERE rec.mycount <= 100);