在 SQL Server 中使用 SQL 编辑非版本化的地理数据库 (geodatabase) 数据

如果数据不参与地理数据库行为,则可在地理数据库中使用 SQL 更新数据、将数据插入非版本化表或从其中删除数据。有关无法使用 SQL 编辑的数据类型和地理数据库行为类型的详细信息,请参阅可使用 SQL 编辑何种数据类型?

已注册到地理数据库的所有数据都具有由系统维护的唯一非空 ObjectID(行 ID)字段。在地理数据库中使用 SQL 将记录插入非版本化表时,必须为 ObjectID 提供唯一的值。

执行 Next_RowID 过程来获取下一可用的 ObjectID 值。然后在 INSERT 语句中使用该值来填充记录的 ObjectID 字段。

注注:

下一个可用 ObjectID 不一定是最后所插入 ObjectID 之后的下一个序号。某些客户端应用程序的 ObjectID 会进行批量分配,因此下一个可用 ObjectID 可能是许多大于您最后使用的 ObjectID 的编号。同样,批中任何未使用的 ObjectID 会返回到可用值池中,这意味着下一个可用 ObjectID 值可能实际上小于最后插入的 ObjectID 值。

步骤:
  1. 登录到 SQL 编辑器,例如 Microsoft SQL Server Management Studio 中的 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/15/2013