Oracleでサポートされている二面性ビュー作成用GraphQL引数

Oracle AI DatabaseのGraphQL引数は、SQLのWHERE句に似た目的を果たし、指定した条件を満たすレコードをフィルタまたは選択できます。

表列の単純な等価述語の場合は、@WHEREディレクティブのかわりに引数を使用できます。引数を定義する構文には、1つ以上のカンマ区切りのフィールドと値のペアを指定します。各フィールド名は、出力でフィルタされる対応する値とペアになります。次の例では、team (name: "Ferrari")引数構文を使用して、Ferrariという名前のteamに固有のドキュメントのみをフィルタします。

例9-12 二面性ビュー作成構文でのGraphQL引数の使用

CREATE OR REPLACE JSON RELATIONAL DUALITY VIEW team_ferrari_dv AS
team (name: "Ferrari") @insert @update @delete {
    _id: team_id
    name: name
    points: points
    driver: driver @insert @update {
        driverId: driver_id
        name: name
        points: points
    }
};
 
SELECT JSON_SERIALIZE(data PRETTY) AS data FROM team_ferrari_dv;
GraphQLの引数によって等価条件を表現するプロセスがどのように簡素化されるかを示すために、前述のGraphQL問合せに相当するSQLを次に示します。

CREATE OR REPLACE JSON RELATIONAL DUALITY VIEW team_dv_check_disabled AS 
SELECT JSON {
    '_id': team_id,
    'name': name,
    'points': points,
    'driver': (SELECT JSON_ARRAYAGG (
        JSON {
            'driverId': driver_id,
            'name': name,
            'points': points 
        }
    ) FROM driver d WITH (INSERT, UPDATE) WHERE d.team_id = t.team_id)
} FROM team t WITH (INSERT, UPDATE, DELETE)
WHERE t.name = 'Ferrari' WITH CHECK OPTION;