使用 SQL 将值插入到 PostgreSQL 中的全局 ID 或 GUID 列中

全局 ID 和 GUID 数据类型可存储注册表样式的由大括号括起来的 36 个字符所组成的字符串。这些字符串用于唯一识别单个地理数据库中和跨多个地理数据库的要素或表行。全局 ID 用于保持单向和双向地理数据库复本中的记录以及离线地图中使用的非版本化数据的唯一性。GUID 可以添加到任何表中。

如果要编辑的表参与复制或离线制图或者包含 GUID,在使用 SQL 将新记录插入到表中时必须将唯一值插入到全局 ID 或 GUID 列中。要执行此操作,请使用 sde.Next_GlobalID 函数。

注注:

在运行 Next_GlobalID 函数之前,必须将 uuid-ossp contrib 模块安装到 PostgreSQL 数据库中。

编辑不可用于存档的非版本化表时,使用该函数将 ID 直接插入表中。编辑可用于存档的非版本化表时,使用该函数将 ID 插入表的存档视图。编辑版本化表时,使用该函数将值插入表的版本化视图。

步骤:
  1. 作为具有表编辑权限的用户从 psql 登录到数据库。

    如果通过版本化或存档视图编辑,用户还必须有编辑视图的权限。

  2. 插入记录时,使用 sde.next_globalid 函数插入下一个全局 ID 值。因为这是一个地理数据库表,所以它还包含 ObjectID。同样,使用 sde.next_rowid 函数将值插入 ObjectID 字段。
    INSERT INTO jason.assets (objectid, asset_id, globalid) 
     VALUES (
      sde.next_rowid('jason', 'assets'),
      57,
      sde.next_globalid()
     );
    

相关主题

5/25/2014