PostgreSQL に格納されたジオデータベースのキーセット テーブル
キーセット テーブルは ArcGIS for Desktop クライアントが整数、番号、日付、文字列タイプの属性を使用してテーブルを結合するジオデータベース リレーションシップ クエリを実行するときに、選択された行のリストを保持するために使用されます。
「PostgreSQL 用 ArcSDE ログ ファイル設定オプション」で説明しているように、ログ ファイル テーブルには選択フィーチャの objectid が格納されます。キーセット テーブルは、objectid 以外の属性による結合に対応するために使用されます。
キーセット テーブルはデータベース クエリのソース選択セットの行の数が 99 を超えるセッション(接続)ごとに 1 つ作成されます。
ArcGIS for Desktop のキーセット テーブル
ArcGIS for Desktop ではキーセット テーブルを確認することはできません。ただし、キーセット テーブルを作成し、データを設定することは可能です。そのためには、ArcMap のリレーションシップ クラスに関与するフィーチャクラスで 99 個を超えるレコードを選択した後、属性テーブルを開き、[オプション] メニューから関連テーブル リストを使用して関連テーブルを取得します。また、編集セッションの開始時にもキーセット テーブルが作成されます。
PostgreSQL データベースのキーセット テーブル
キーセット テーブルは、次のどちらかの状態になるまでジオデータベースに作成されません。
- ArcGIS for Desktop を通じて選択が実行される。
- 編集セッションが開始される。
どちらかの状態が発生した場合、キーセット テーブルはグローバル一時テーブルとして作成されます。1 つめのケースでは、キーセット テーブルが作成され、レコードが追加されます。2 つめのケースでは、キーセット テーブルは作成されるだけで、条件を満たす選択セットが作成されるまで空のままになります。
キーセット テーブルの名前には、キーセット テーブルの作成に至ったセッションのプロセス ID 番号が含まれています。形式は次のとおりです。
keyset_<process_id>
キーセット テーブルは選択セットのキーセット ID 番号とフィーチャクラス間のリレーションシップのベースとなるフィールドの値を格納します。
キーセット テーブルは、一時テーブルなので、ユーザがデータベースへの接続を終了したときに削除されます。ただし、このテーブルを格納するために PostgreSQL によって作成された一時スキーマは残ります。このスキーマには pg_temp_3 などの名前が付けられます。
次に、LATERALS テーブルと CONTRACTORS テーブル間で選択を行うためのキーセット テーブルを示します。この場合、LONG_VAL フィールドには、LATERALS テーブルと CONTRACTORS テーブルのリレーションシップ クラスのベースとなる CONTRACTOR_ID フィールドの値が含まれます。
keyset_<process_id>
次に、PostgreSQL のキーセット テーブルの定義を示します。
フィールド名 |
フィールド タイプ |
説明 |
NULL? |
---|---|---|---|
keyset_id |
integer |
キーセット選択の ID。 |
NOT NULL |
long_val |
integer |
リレーションシップ クラスのベースとなるフィールドが数値フィールドの場合、そのフィールドの値。 |
|
str_val |
varchar(256) |
リレーションシップ クラスのベースとなるフィールドが文字列フィールドの場合、そのフィールドの値。 |
|
dbl_val |
double |
リレーションシップ クラスのベースとなるフィールドが倍精度数値フィールドの場合、そのフィールドの値。 |
|
date_val |
timestamp without time zone |
リレーションシップ クラスのベースとなるフィールドが日付フィールドの場合、そのフィールドの値。 |
XML ワークスペース ドキュメントのキーセット テーブル
キーセット テーブルは一時的なテーブルのため、XML ドキュメントに格納することはできません。