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

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

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

Next_RowID プロシージャを実行して、次に使用可能な ObjectID の値を取得します。次に、その値を INSERT ステートメントで指定して、レコードの ObjectID フィールドに値を設定します。

注意注意:

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

手順:
  1. Microsoft SQL Server Management Studio の SQL エディタのような SQL エディタにログインします。

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

  2. Next_RowID プロシージャを実行して、ObjectID フィールドの値を取得します。

    この例では、gisdata4 は farmland テーブルが存在するスキーマです。

    DECLARE @id as integer
    EXEC dbo.next_rowid 'gisdata4', 'farmland', @id OUTPUT;
    SELECT @id "Next ObjectID";
    
    Next ObjectID
    423
    
  3. 先のステートメントで返された値を使用して、挿入するレコードの ObjectID フィールドに値を入力します。
    INSERT INTO gisdata4.farmland (objectid,crop,shape)
    VALUES (
    423,
    'oats',
    geography::STGeomFromText('POLYGON((-111.85897004 33.25178949,
    -111.86899617 33.25065270, -111.86887014 33.25062350,
    -111.85884555 33.25176951, -111.85897004 33.25178949))', 4267));
    
  4. 編集を続けます。編集が完了した場合は、編集内容をデータベースにコミットします。

関連トピック

9/14/2013