GET_EXPORTED_KEYS

説明

ストアドプロシージャ GET_EXPORTED_KEYS は、他のビューの外部キーによって参照されている列 (エクスポートされるキー) を返します。結果の各行は、エクスポートされるキーのフィールドを表します。このプロシージャは、 GET_FOREIGN_KEYS反対 です。

外部キーは、別のビューまたは同じビューの行を一意に識別するビューのフィールド (または一連のフィールド) です。たとえば、以下のビューがあるとします。

  • Order: プライマリキーは「id」です。

  • Order_details: このビューにはフィールド「order_id」があります。このフィールドの値は、このビューが属す注文の ID です。

これらを使用して外部キーを定義するには、「order」と「order_details」の間にアソシエーションを作成する必要があります。

  • 「order_details」の「order_id」と「order」の「id」の間でマッピングを行う必要があります。

  • [Referential constraint] オプションを選択します。そうしないと、外部キーとは見なされなくなります。

  • エンドポイント「order」は プリンシパル であり、「player」は 依存側 です。

  • エンドポイント「order」のカーディナリティは 1 です。これは、「order_details」の行は「order」の 1 つの行のみを参照できることを意味します。

これらが役立つ理由と、その作成方法については、管理ガイドの「 Associations 」で説明しています。

構文

GET_EXPORTED_KEYS (
      input_database_name : text
    , input_view_name : text
)
  • このプロシージャを CALL で呼び出し、パラメーターでフィルターしない場合は、 null を渡します。

  • input_database_name および input_view_namenull の場合、このプロシージャはすべてのデータベースのすべてのビューの参照されるフィールドを返します。

  • input_view_namenull の場合、このプロシージャはそのデータベースのすべてのビューの参照されるフィールドを返します。


このプロシージャは、以下のフィールドを返します。

  • pk_database_name: プライマリキーのビューが属すデータベースの名前。

  • pk_view_name: プライマリキーのビューの名前。

  • pk_column_name: プライマリキーの一部であるフィールドの名前。

  • pk_name: プライマリキーの名前。

  • fk_database_name: 外部キーのビューが属すデータベースの名前。

  • fk_view_name: 外部キーのビューの名前。

  • fk_column_name: 外部キーの一部であるフィールドの名前。

  • fk_name: アソシエーションの名前。

必要な権限

このプロシージャの結果は、それを実行するユーザーに付与されている権限によって異なります。ユーザーが管理者ユーザーではない場合、以下の点に注意してください。

  • パラメーター input_database_namenull ではない場合、ユーザーがこのデータベースに対する CONNECT 権限を持っていないと、このプロシージャはエラーを返します。

  • ユーザーがビューおよび外部キーが存在するビューに対する EXECUTE 権限を持っている場合、このプロシージャはそのビューのエクスポートされるキーに関する情報のみを返します。

以下の図のような 3 つのビューがあるとします。

Three views with foreign keys

以下の図は、ビュー「player」と「game」の間のアソシエーションの構成を示しています。

Associations between the views player and game

例 1

SELECT pk_view_name, pk_column_name, pk_name, fk_view_name, fk_column_name, fk_name
FROM get_exported_keys()
WHERE input_database_name = 'example'

pk_view_name

pk_column_name

pk_name

fk_view_name

fk_column_name

fk_name

player

id_player

PRIMARY

winner

player_fk

winner_player

game

id_game

PRIMARY

player

game_fk

game_player

入力パラメーター「input_view_name」に値を渡さないか、 null を渡した場合、このプロシージャの結果は GET_FOREIGN_KEYS と同じです。

例 2

SELECT pk_view_name, pk_column_name, pk_name, fk_view_name, fk_column_name, fk_name
FROM get_exported_keys()
WHERE input_database_name = 'example' and input_view_name='game'

結果は以下のとおりです。

pk_view_name

pk_column_name

pk_name

fk_view_name

fk_column_name

fk_name

game

id_game

PRIMARY

player

game_fk

game_player

例 3

SELECT pk_view_name, pk_column_name, pk_name, fk_view_name, fk_column_name, fk_name
FROM get_exported_keys()
WHERE input_database_name = 'example' and input_view_name='winner'

ビュー「winner」を参照する外部キーが存在しないため、このクエリは行を返しません。

GET_FOREIGN_KEYS プロシージャの例を参照して、両方のプロシージャの違いについて理解を深めてください。