Oracle のグローバル ID(GUID)列に対する SQL による値の挿入
GUID データ タイプは、中括弧({})で囲まれた 36 文字のレジストリ形式の文字列を格納します。この文字列によって、ジオデータベース内とジオデータベース間でフィーチャまたはテーブル行を一意に識別できます。グローバル ID は、一方向および双方向のジオデータベース レプリカでレコードの一意性を維持するために使用されます。GUID はどのレイヤにも追加できます。
そのため、編集するテーブルがレプリケーションに関与している場合、または、GUID 列を含む場合、SQL を使用してテーブルに新しいレコードを挿入するときに、グローバル ID(GUID)列に一意の値を挿入する必要があります。これには、sde.version_user_ddl.retrieve_guid ユーティリティを呼び出します。編集するテーブルがバージョン対応である場合は、sde.version_user_ddl.retrieve_guid ユーティリティを使用して、テーブルのマルチバージョン対応ビューを SQL によって編集します。
カタログ ウィンドウでフィーチャクラスにグローバル ID を追加するには、データセットを右クリックして、[グローバル ID の追加] をクリックします。ArcGIS 経由で編集している場合、この値はジオデータベースによって自動的に挿入されます。
-
バージョン対応テーブルを編集する場合は、MS-DOS プロンプトまたはシェル プロンプトで sdetable コマンドを実行して、マルチバージョン対応ビューを作成します。
手順については、「マルチバージョン対応ビューの作成」をご参照ください。
- SQL*Plus のような SQL エディタを開きます。
- テーブルを編集する権限を持ったユーザとしてデータベースに接続します。
-
テーブル自体またはビューの元となるテーブルが ST_Geometry 列を含む場合は、ST_GEOMETRY_COLUMNS テーブルをクエリして、テーブルの空間参照 ID(SRID)を取得します。
SELECT srid FROM sde.st_geometry_columns WHERE table_name='MYTABLE' AND owner='USER22'; SRID ---------- 4
このビューまたはテーブルに挿入するレコードには、この SRID を使用する必要があります。
- バージョン対応テーブルを編集する場合は、「マルチバージョン対応ビューと SQL による Oracle のバージョン対応データの編集」の手順に従って、編集するバージョンを作成し、バージョンを設定して、編集セッションを開始します。バージョン非対応テーブルを編集する場合は、次のステップに進みます。
-
レコードの挿入時は、sde.version_user_ddl.retrieve_guid ユーティリティを使用して、次のグローバル ID(GUID)値を挿入します。
以下の例では、マルチバージョン対応ビュー mytable_mv にレコードを挿入します。テーブルは ST_Geometry 列を含み、ステップ 4 で取得した SRID が使用されます。
INSERT INTO mytable_mv (globalid,shape) VALUES (sde.version_user_ddl.retrieve_guid,(sde.st_polygon ('polygon ((10000 520000, 100008889 55000, 1045545983 234280934, 10000 520000))',4)));
- 編集が完了したら、データベースにコミットします。
- 編集を終えたら、バージョン対応テーブルを編集している場合は、「マルチバージョン対応ビューと SQL による Oracle のバージョン対応データの編集」の手順に従って編集セッションを終了します。