マルチバージョン対応ビューと SQL による DB2 のバージョン対応データの編集

データに対して作成されたマルチバージョン対応ビューを編集することで、Linux、UNIX、または Windows オペレーティング システムの IBM DB2 を使用するジオデータベースのバージョン対応属性データを編集できます。

メモメモ:

マルチバージョン対応ビューは、z オペレーティング システムの DB2 データベースではサポートされていません。

マルチバージョン対応ビューの操作に使用するストアド プロシージャが ArcSDE とともにインストールされます。そのコンポーネントと説明を以下に示します。

ストアド プロシージャ

目的

構文と説明

sde.create_version

新しいジオデータベース バージョンを作成します。

必ず、ユーザ自身の個別のバージョンを編集してください。マルチバージョン対応のビューで複数の編集者が同一のバージョンを編集することはできません。

CALL sde.create_version ('<parent_version>', '<child_version>', <name_rule>, <access>, '<description>', <message_code_output>, <message_output>)

<parent_version> はバージョンの作成元となるバージョンです。

<child_version> は作成するバージョンの名前です。

<name_rule> はバージョン用に指定された名前をそのまま使用するか(2)、それとも、重複する名前が指定されたときは一意の名前を作成するか(1)を示します。

<access> はバージョンの権限レベルです。0 はプライベート、1 はパブリック、2 はプロテクトです。

<description> はテキストによる子バージョンの説明です。

<message_code_output> は SQL コードを返すことを示します。

<message_output> は SQL メッセージを返すことを示します。

sde.setcurrentversion

アクセスするジオデータベース バージョンを設定します。

CALL sde.setcurrentversion('<version_name>', <message_code_output>, <message_output>)

<version_name> は接続するジオデータベース バージョンの名前です。

sde.edit_version

編集セッションを開始もしくは終了します。

CALL sde.edit_version('<version_name>', <1 または 2>, <message_code_output>, <message_output>)

編集セッションを開始するときは、1 を指定します。終了するときは、2 を指定します。

sde.delete_version

ジオデータベース バージョンを削除します。

CALL sde.delete_version('<version_name>', <message_code_output>, <message_output>)

マルチバージョン対応ビュー経由でバージョン対応テーブルを編集するときは、デルタ テーブルに変更が加えられ、新しいレコードの行 ID(object ID)の値は自動的に生成されます。ただし、ArcGIS 編集セッションでバージョン対応データを編集するときとは違って、編集時に内部でバージョンのリコンサイルは実行されません。

さらに、マルチバージョン対応ビューで編集セッションを開始すると、バージョンが参照しているステートに排他ロックがかかります。
したがって、マルチバージョン対応ビューを使用して、DEFAULT バージョン、または、他のユーザから同時編集またはリコンサイルを受ける可能性のあるバージョンは編集しないようにしてください。競合が検出されず、ロックによって他のユーザがブロックされるからです。代わりに、マルチバージョン対応ビューの編集セッション専用の独自バージョンを作成します。

注意注意:
  • リコンサイル、競合解決、ポストのようなバージョン管理操作は、ArcGIS ソフトウェアを使用して実行する必要があります。バージョン管理が不適切な場合、マルチバージョン対応ビューの操作によってジオデータベースが破壊される可能性があります。
  • ArcSDE によってデータベース内に維持される行 ID(object ID)フィールドを、データベース管理システム(DBMS)のツールを使用して更新しないでください。
この object ID フィールドはジオデータベースによって割り当てられ管理されます。
SQL を使用して変更しないでください。
  • SQL を使用してジオデータベースの DEFAULT バージョンを編集しないでください。
バージョンに対して編集セッションを開始すると、そのバージョンが参照しているステートに排他ロックがかかります。
DEFAULT バージョンがロックされた場合、他の ArcGIS ユーザはジオデータベースに接続できなくなります。


以下の手順は、マルチバージョン対応ビューの作成から、編集を実行するバージョンの作成、編集するバージョンの設定、編集セッションの開始、マルチバージョン対応ビュー経由での編集の実行、編集セッションの終了、編集内容のデータベースへのコミット、編集用に作成したバージョンの削除までの、一連の手順を示しています。例では、テーブルを編集するために作成するマルチバージョン対応ビューは code_mv で、作成して編集に使用するバージョンは mvedits です。

ヒントヒント:

マルチバージョン対応ビュー経由で編集するデータセットは、バージョン対応登録されている必要があります。

手順:
  1. MS-DOS(Windows)またはシェル(UNIX または Linux)コマンド プロンプトで sdetable ユーティリティを実行して、マルチバージョン対応ビューを作成します。
    sdetable –o create_mv_view –T code_mv 
    –t code_enf –i sde:db2 –D code –u sarja –p not4U
  2. 編集を実行する新しいバージョンを作成します。
    CALL sde.create_version ('SDE.DEFAULT', 'mvedits', 1, 1, 'multiversioned view edit version', ?, ?)
  3. 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.

  4. 作成した子バージョンに対して編集セッション用のバージョンを設定します。
    CALL sde.setcurrentversion('mvedits', ?, ?)
  5. 1 を指定して edit_version ストアド プロシージャを呼び出し、編集セッションを開始します。1 は編集セッションの開始を意味します。
    CALL sde.edit_version('mvedits', 1, ?, ?)
  6. SQL を使用してマルチバージョン対応ビューに最初の編集を加えます。

    この例では、既存のレコードを更新します。

    UPDATE code_mv 
    SET propowner = 'C. Industry' 
    WHERE vid = 2233
  7. SQL を使用してマルチバージョン対応ビューに次の編集を加えます。

    この例では、新規にレコードを挿入します。

    INSERT INTO code_mv 
    (codenum, propowner) 
    VALUES (456, 'Anjo Badsu')
    ヒントヒント:

    INSERT ステートメントでは object ID 値を指定しません。マルチバージョン対応ビューでは、次に使用可能なオブジェクト ID が自動的に取得されて行に挿入されます。

    ArcSDE に登録され、ユーザ管理の object ID 列を持つテーブルをバージョン対応登録することは可能ですが、推奨されません。この方法の場合、INSERT ステートメントで object ID を指定する必要があります。マルチバージョン対応ビューが自動的に値を生成することはできません。

  8. COMMIT または ROLLBACK ステートメントを実行します。
  9. 今回は 2 を指定して edit_version ストアド プロシージャを呼び出し、編集セッションを終了します。2 は編集セッションの終了を意味します。
    CALL sde.edit_version('mvedits', 2, ?, ?)
  10. すべての編集が終了したら、ArcGIS Desktop 経由で編集内容のリコンサイルとポストを実行して、ステップ 2 で作成したジオデータベース バージョンを削除します。データの変更を適用しない場合は、編集内容のリコンサイルとポストを実行しないで、ステップ 2 で作成したバージョンを削除することもできます。
    CALL sde.delete_version('mvedits', ?,?)

関連項目


3/6/2012