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

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

注注:

如果要使用 SQL 编辑的非版本化表已可用于存档,则必须编辑表存档视图而不是表本身。该视图将自动更新某些 ArcGIS 维护的字段。有关详细信息,请参阅什么是存档视图及其相关主题。

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

这组说明介绍如何在非版本化表中每次更新一行以及如何插入一个 ObjectID。您很可能要编写例程或客户端程序来检索 ObjectID 和更新数据。

步骤:
  1. 从 SQL 编辑器(例如 I-SQL)登录到数据库。

    请确保以拥有数据编辑权限的用户身份登录到数据库。

  2. 查询 table_registry 表,找到要插入行的表的注册 ID 和所有者。

    此例中,返回了 factories 表的注册 ID 和所有者名称。

    SELECT owner,registration_id,table_name
     FROM sde.table_registry
     WHERE table_name='factories';
    
    owner    registration_id    table_name
    editor1         7           factories
    
  3. 登录并执行 next_row_id 函数,获取下一可用的行 ID 值。
  4. 执行 next_row_id 函数。此函数归 sde 用户所有。

    此例中,editor1 为表的所有者,7 为表的注册 ID。

    EXECUTE FUNCTION "sde".next_row_id('editor1',7);
    
    ret_code 0
    err_msg
    rowid 18
    
    1 row(s) retrieved.
    

  5. 返回到 SQL 编辑器,将记录插入表中。
    INSERT INTO factories
     VALUES (
      18,
      'makem'
      ST_PolyFromText('POLYGON((52 18,66 23,73 9,48 6,52 18),(59 18,67 18,67 13,59 13,59 18))',4326)
     );
    

如果该表还包含 GUID 或全局 ID 字段,则还必须为此字段提供一个唯一的值。有关详细信息,请参阅使用 SQL 将值插入到 Informix 中的全局 ID 列

相关主题

5/25/2014