PostgreSQL のバージョン非対応ジオデータベース データの SQL による編集

ジオデータベースのバージョン対応登録されていないテーブルのデータがジオデータベースの振舞いに関与しない場合、そのデータに対して SQL による更新、挿入、削除操作を実行できます。SQL を使用して編集できないデータ タイプとジオデータベースの振舞いについては、「SQL で編集可能なデータ タイプ」をご参照ください。

注意注意:

バージョン対応登録されていないテーブルを SQL を使用して編集するときに、履歴管理が有効化されている場合は、テーブル自体ではなく、テーブルの履歴管理ビューを編集する必要があります。ビューは ArcGIS が管理しているフィールドを自動的に更新します。詳細については、「履歴管理ビューとは」と関連トピックをご参照ください。

ジオデータベースに登録されたデータはすべて、システムによって保守される NULL でない一意の ObjectID(Row ID)フィールドを持ちます。SQL を使用してジオデータベースのバージョン対応登録されていないテーブルにレコードを挿入するときは、ObjectID 用の一意な値を設定する必要があります。INSERT ステートメントで Next_RowID 関数を指定して、次に有効な値を ObjectID フィールドに入力します。

注意注意:

次に使用可能な ObjectID は、必ずしも最後に挿入した ObjectID に連続する番号ではありません。一部のクライアント アプリケーションではバッチ操作で ObjectID が割り当てられます。そのため、次に使用可能な ObjectID は、最後に使用した ObjectID から大きく離れた数字になることがあります。また、バッチで使用しなかった ObjectID は、使用可能な値のプールに戻されます。つまり、次に使用可能な ObjectID 値が、実際には、最後に挿入した ObjectID 値より小さくなることもあります。

次の一連の手順では、バージョン対応登録されていないテーブルの行を 1 行ずつ更新して、ObjectID を挿入する方法を説明します。通常は、ObjectID を取得してデータを更新するルーチンまたはクライアント プログラムを作成することになります。

手順:
  1. psql のような SQL エディタからデータベースにログインします。

    データを編集する権限を持ったユーザとしてデータベースにログインしてください。

  2. Next_RowID 関数を使用して、ObjectID フィールドに値を入力します。

    この例では、site_id 列は ObjectID フィールドで、テーブルの名前は outbreak です。テーブルは、hmoot スキーマに格納されます。

    INSERT INTO hmoot.outbreak (site_id, med_code,num_affected, shape) 
     VALUES (
      sde.next_rowid('hmoot', 'outbreak'), 
      'v-22a', 
      3, 
      ST_Point('point (12 36))', 4326
     );
    
  3. 編集を続けます。編集が完了した場合は、編集内容をデータベースにコミットします。

テーブルに GUID または Global ID フィールドが含まれている場合は、このフィールドにも一意の値を指定する必要があります。詳細については、「Next_GlobalID」をご参照ください。

関連トピック

5/25/2014