バージョン対応ビューに対して SQL SELECT ステートメントを実行することで、バージョン対応登録されたデータにアクセスできます。
DEFAULT バージョンから読み取る
DEFAULT バージョンに対して SQL ステートメントを実行する場合には、最新のステートを読み取るか、指定したステートを読み取るかを選択できます。
DEFAULT バージョンの最新のステートを読み取る
バージョン対応ビューは、DEFAULT バージョンの最新のステートに自動的にアクセスします。バージョン対応ビューに対して SELECT ステートメントを実行すると、そのコマンドを実行した時点での DEFAULT バージョンのステートにアクセスします。他のユーザーが編集データを DEFAULT バージョンにコミットしている場合 (これによって、DEFAULT バージョンが参照しているステートが変更されている場合)、それ以降のクエリには最新のステートとその編集データが表示されます。
DEFAULT バージョンの特定のステートを読み取る
DEFAULT バージョンの特定のステートに対するクエリで、そのクエリの実行中にステートが変更されないようにするには、sde_set_current_version 関数を実行します。この関数は指定されたバージョン名を検証して、該当するデータベースの状態を内部的に設定します。DEFAULT バージョンに対して sde_set_current_version 関数を実行すると、DEFAULT バージョンに対するクエリは、その関数を実行した時点で DEFAULT バージョンが参照していたステートを常に指すようになります。
sde_set_current_version は SQL クライアントから直接実行できます。構文は次のとおりです。
SELECT sde.sde_set_current_version('<version_name>');
必要に応じて、この関数をもう一度実行し、バージョン対応登録されたテーブルの最新のステートを返すように変更できます。
- アクセスするバージョン対応登録されたフィーチャクラスまたはテーブルに対して、バージョン対応ビューが存在することを確認します。
ArcGIS 10.1 からは、バージョン対応ビューはデータをバージョン対応登録するときに作成されます。データが 10.1 より前にバージョン対応登録されていた場合に、バージョン対応ビューを作成するには、ArcMap の [カタログ] ツリーのデータセットを右クリックし、[管理] をクリックして [SQL アクセスを有効化] をクリックします。
- psql クライアントを開き、sde_set_current_version 関数を使用して、DEFAULT バージョンを設定します。
SELECT sde.sde_set_current_version('default'); - バージョン対応ビューに対して SELECT ステートメントを発行して、ジオデータベースからバージョン対応登録されたデータを読み取ります。
この例では、バージョン対応ビューは sightings_ev です。
SELECT id, species, reporter FROM sightings_ev WHERE reporter = 'chuck';
DEFAULT 以外のバージョンを読み取る
DEFAULT 以外のバージョンに対してクエリを実行する場合や、DEFAULT バージョンに対するクエリでステートが変更されないようにする場合は、sde_set_current_version 関数を実行します。この関数は指定されたバージョン名を検証して、該当するデータベースの状態を内部的に設定します。sde_set_current_version を実行すると、バージョンに対して行われるクエリは、常にバージョンが参照していたステートを指すようになります。
必要に応じてこの関数を再度呼び出して別のバージョンに変更することもできます。また、ワークスペースが更新されるたびにアプリケーションから呼び出して、バージョン対応テーブルの現在の状態を取得することもできます。
- アクセスするバージョン対応登録されたフィーチャクラスまたはテーブルに対して、バージョン対応ビューが存在することを確認します。
テーブル、フィーチャクラス、またはフィーチャ データセットをバージョン対応登録すると、バージョン対応ビューが作成されます。データが ArcGIS 10.1 より前にバージョン対応登録されている場合でも、データセットを右クリックし、[管理] をクリックして [SQL アクセスを有効化] をクリックすることで、バージョン対応ビューを作成できます。
- psql クライアントを開き、sde_set_current_version 関数を使用して、クエリするバージョンを設定します。
この例では、クエリ対象のバージョンとして fieldinspection が設定されています。
SELECT sde.sde_set_current_version('fieldinspection'); - バージョン対応ビューに対して SELECT ステートメントを発行して、ジオデータベースからバージョン対応登録されたデータを読み取ります。
この例では、バージョン対応ビューは code_ev です。
SELECT owner, site_address, region FROM code_ev WHERE region = 'b';
DEFAULT バージョンの最新のステートに対するクエリ手順に戻す必要がある場合は、set_default 関数を呼び出します。
SELECT sde.set_default;