Oracle のグローバル ID(GUID)列に対する SQL による値の挿入

GUID データ タイプは、中括弧({})で囲まれた 36 文字のレジストリ形式の文字列を格納します。この文字列によって、ジオデータベース内とジオデータベース間でフィーチャまたはテーブル行を一意に識別できます。グローバル ID は、一方向および双方向のジオデータベース レプリカでレコードの一意性を維持するために使用されます。GUID はどのレイヤにも追加できます。

そのため、編集するテーブルがレプリケーションに関与している場合、または、GUID 列を含む場合、SQL を使用してテーブルに新しいレコードを挿入するときに、グローバル ID(GUID)列に一意の値を挿入する必要があります。これには、sde.version_user_ddl.retrieve_guid ユーティリティを呼び出します。バージョン非対応テーブルを編集する場合、テーブルに ID を直接挿入できます。バージョン対応登録されたテーブルを編集する場合、SQL を使用してテーブルのバージョン対応ビューの GUID(グローバル ID)列に値を挿入するには、sde.version_user_ddl.retrieve_guid ユーティリティを使用します。

ヒントヒント:

カタログ ウィンドウでフィーチャクラスにグローバル ID を追加するには、データセットを右クリックして、[グローバル ID の追加] をクリックします。ArcGIS 経由で編集している場合、この値はジオデータベースによって自動的に挿入されます。

手順:
  1. ArcGIS 10.1 以降を使用してバージョン対応登録されたテーブルを編集している場合、そのテーブルのバージョン対応ビューはデータベース内にすでに存在します。ビュー名は、テーブル名に _vw が付いています。バージョン対応ビューが存在しない場合は、ArcGIS for Desktop で作成できます。詳細については、「ArcGIS for Desktop でのバージョン対応ビューの作成」をご参照ください。
  2. SQL*Plus のような SQL エディタを開きます。
  3. テーブルを編集する権限を持ったユーザとしてデータベースに接続します。

    バージョン対応ビューから編集している場合、ユーザはビューを編集する権限も持っている必要があります。

  4. テーブル自体またはビューの元となるテーブルが ST_Geometry 列を含む場合は、ST_GEOMETRY_COLUMNS テーブルをクエリして、テーブルの空間参照 ID(SRID)を取得します。
    SELECT srid 
    FROM sde.st_geometry_columns 
    WHERE table_name='MYTABLE'
    AND owner='USER22';
    

    SRID 
    ---------- 
    4

    このビューまたはテーブルに挿入するレコードには、この SRID を使用する必要があります。

  5. バージョン対応登録されたテーブルを編集している場合は、バージョン対応ビューを使用した編集の詳細について、「SQL を使用した Oracle でのバージョン対応データの編集」をご参照ください。バージョン非対応テーブルを編集する場合は、次のステップに進みます。
  6. レコードの挿入時は、sde.version_user_ddl.retrieve_guid ユーティリティを使用して、グローバル ID(GUID)値を挿入します。

    以下の例では、バージョン対応ビュー mytable_vw にレコードを挿入します。テーブルは ST_Geometry 列を含み、ステップ 4 で取得した SRID が使用されます。

    INSERT INTO mytable_vw (globalid,shape) 
    VALUES
    (sde.version_user_ddl.retrieve_guid,(sde.st_polygon
    
    ('polygon ((10000 520000, 100008889 55000, 1045545983 234280934,
    10000 520000))',4)));
    
  7. 編集が完了したら、データベースにコミットします。
9/14/2013