最初の再帰的ビュー定義は、右外部結合の正しい使い方を示しており、その部分は太字で強調されています。この使い方が有効なのは、ビュー定義の繰り返し文の再帰的関係が右側の外部結合の外部関係として使用されているからです。
CREATE RECURSIVE VIEW rec (f1, mycount) AS (
SELECT a1, 0 AS mycount
FROM nonrec
UNION ALL
SELECT a2, mycount + 1
FROM nonrec RIGHT OUTER JOIN rec ON nonrec.a1 = rec.f1
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 rec RIGHT OUTER JOIN nonrec ON nonrec.a1 = rec.f1
WHERE rec.mycount <= 100);
右側の外部結合は、再帰的ビュー定義のシード文内で制約なしで使用できます。