47848


再帰CTE (with recursive) について調べていて、これは SQL99
の規格で標準が定められているらしいですが、その厳密な仕様はどうなっているのか、気になりました。

with recursive の規格(とくに、どういった構文がゆるされるのか)ないし、これについてまとまった資料などはありませんでしょうか。


CC BY-SA 4.0
2018-08-23T06:10:51.623
47754
2018-08-27T07:02:55.343
754
question
sql
標準SQL (SQL99) 準拠の再帰CTEの仕様は?


<https://www.iso.org/standard/26197.html> の、 `7.13 <query expression>`
にいろいろ書いてあります。構造としては、

  * with recursive で定義された場合、以下のような制約を見たさなければならない 
    * 再帰は線形(linear)でなければならない

に集約されるようだ、と思っています。ここで言う再帰が線形である、というのはどういうことかというと、各 with の query expression
に対して、それが参照するその他 with 参照名のうち、同じ循環した参照グラフの中にいる with
参照名は、高々1つである。プラス、線形にループを回すために、 with 項目の query expression
が従わなければならい条件がひたすら続く、、、みたいな構造です。

一つ注目するべきは、この仕様を自分が読む限りでは、相互循環再帰は、それが linear である限り、認められているようだ、ということです。


CC BY-SA 4.0
2018-08-27T07:02:55.343
47848
2018-08-27T07:02:55.343
754
47754
answer