マルチバージョン対応ビューと SQL による PostgreSQL のバージョン対応データの編集
データに対して作成されたマルチバージョン対応ビューを編集することで、ジオデータベースのバージョン対応データを編集できます。
マルチバージョン対応ビューの操作に使用できる関数がArcSDE とともにインストールされます。 その関数と説明を以下に示します。
関数 |
目的 |
構文と説明 |
---|---|---|
sde.sde_create_version |
新しいジオデータベース バージョンを作成します。 必ず、ユーザ自身の個別のバージョンを編集してください。マルチバージョン対応のビューで複数の編集者が同一のバージョンを編集することはできません。 |
SELECT sde.sde_create_version ('<parent_name>', '<version_name>', <rule_code>, <access_code>, '<description>') <parent_version> はバージョンの作成元となるバージョンです。 <child_version> は作成するバージョンの名前です。 <name_rule> はバージョン用に指定された名前をそのまま使用するか(2)、それとも、重複する名前が指定されたときは一意の名前を作成するか(1)を示します。 <access> はバージョンの権限レベルです。0 はプライベート、1 はパブリック、2 はプロテクトです。 <description> はテキストによる子バージョンの説明です。 |
sde.sde_set_current_version |
アクセスするジオデータベース バージョンを設定します。 |
SELECT sde.sde_set_current_version('<version_name>'); <version_name> は接続するジオデータベース バージョンの名前です。 |
sde.sde_edit_version |
編集セッションを開始もしくは終了します。 |
SELECT sde.sde_edit_version('<version_name>',<1 or 2>) 編集セッションを開始するときは、1 を指定します。終了するときは、2 を指定します。 |
sde.sde_delete_version |
ジオデータベース バージョンを削除します。 |
SELECT sde.sde_delete_version('<version_name>'); |
マルチバージョン対応ビュー経由でバージョン対応テーブルを編集するときは、デルタ テーブルに変更が加えられ、新しいレコードの行 ID(object ID)の値は自動的に生成されます。ただし、ArcGIS 編集セッションでバージョン対応データを編集するときとは違って、編集時に内部でバージョンのリコンサイルは実行されません。
さらに、マルチバージョン対応ビューで編集セッションを開始すると、バージョンが参照しているステートに排他ロックがかかります。 したがって、マルチバージョン対応ビューを使用して、DEFAULT バージョン、または、他のユーザから同時編集またはリコンサイルを受ける可能性のあるバージョンは編集しないようにしてください。競合が検出されず、ロックによって他のユーザがブロックされるからです。代わりに、マルチバージョン対応ビューの編集セッション専用の独自バージョンを作成します。
- リコンサイル、競合解決、ポストのようなバージョン管理操作は、ArcGIS ソフトウェアを使用して実行する必要があります。バージョン管理が不適切な場合、マルチバージョン対応ビューの操作によってジオデータベースが破壊される可能性があります。
- ArcSDE によってデータベース内に維持される行 ID(object ID)フィールドを、データベース管理システム(DBMS)のツールを使用して更新しないでください。 この object ID フィールドはジオデータベースによって割り当てられ管理されます。 SQL を使用して変更しないでください。
- SQL を使用してジオデータベースの DEFAULT バージョンを編集しないでください。 バージョンに対して編集セッションを開始すると、そのバージョンが参照しているステートに排他ロックがかかります。 DEFAULT バージョンがロックされた場合、他の ArcGIS ユーザはジオデータベースに接続できなくなります。
以下の手順は、マルチバージョン対応ビューの作成から、編集を実行するバージョンの作成、編集するバージョンの設定、編集セッションの開始、マルチバージョン対応ビュー経由での編集の実行、編集セッションの終了、編集内容のデータベースへのコミット、編集用に作成したバージョンの削除までの、一連の手順を示しています。例では、テーブルを編集するために作成するマルチバージョン対応ビューは code_mv で、作成して編集に使用するバージョンは mvedits です。
マルチバージョン対応ビュー経由で編集するデータセットは、バージョン対応登録されている必要があります。
-
MS-DOS(Windows)またはシェル(Linux)コマンド プロンプトで sdetable ユーティリティを実行して、マルチバージョン対応ビューを作成します。
sdetable –o create_mv_view –T code_mv –t code_enf –i sde:postgresql:myserver –D code –u sarja –p not4U
-
psql からデータベースにログインして、編集を実行する新しいバージョンを作成します。
SELECT sde.sde_create_version ('sde.DEFAULT', 'mvedits', 2, 1, 'version for edits');
-
作成した子バージョンに対して編集セッション用のバージョンを設定します。
SELECT sde.sde_set_current_version('mvedits');
-
1 を指定して sde_edit_version 関数を実行し、編集セッションを開始します。
1 は編集セッションの開始を意味します。
SELECT sde.sde_edit_version('mvedits',1);
-
SQL を使用してマルチバージョン対応ビュー経由で最初の編集を実行します。
この例では、既存のレコードを更新します。
UPDATE code_mv SET propowner = 'C. Industry' WHERE vid = 2233
-
このセッションにおけるすべての編集が終了したら、今回は 2 を指定して sde_edit_version 関数を実行し、編集セッションを終了します。
2 は編集セッションの終了を意味します。
SELECT sde.sde_edit_version('mvedits',2);
-
すべての編集が終了したら、ArcGIS Desktop 経由で編集内容のリコンサイルとポストを実行して、ステップ 2 で作成したジオデータベース バージョンを削除できます。データの変更を適用しない場合は、編集内容のリコンサイルとポストを実行しないで、ステップ 2 で作成したバージョンを削除することもできます。
SELECT sde.sde_delete_version('mvedits');
Text enclosed in single quotes is read literally. Therefore, the text you type inside the quote marks must match the case of the text (all upper case, all lower case, or mixed case) as it is stored in the database.