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

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

因此,如果要编辑的表参与复制或包含 GUID 列,在使用 SQL 将新记录插入到表中时必须将唯一值插入到全局 ID 或 GUID 列中。要执行此操作,请调用 sde.version_user_ddl.retrieve_guid 工具。编辑非版本化表时,可将 ID 直接插入表中。编辑版本化表时,通过 SQL 使用 sde.version_user_ddl.retrieve_guid 工具将值插入表的版本化视图中的 GUID 或全局 ID 列。

提示提示:

右键单击目录窗口中的数据集,然后单击添加全局 ID,可将全局 ID 添加到要素类。当使用 ArcGIS 进行编辑时,地理数据库会自动保留这些值。

步骤:
  1. 如果编辑的是使用 ArcGIS 10.1 或更高版本进行版本化的表,则版本化视图已经存在于该表的数据库中。视图名称将是带有后缀 _vw 的表名称。如果版本化视图不存在,可以通过 ArcGIS for Desktop 创建一个。有关说明,请参阅通过 ArcGIS for Desktop 创建版本化视图
  2. 打开 SQL 编辑器(例如,SQL*Plus)。
  3. 以具有编辑此表权限的用户身份连接到数据库。

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

  4. 如果表或视图所基于的表包含 ST_Geometry 列,请查询 ST_GEOMETRY_COLUMNS 表来查找表的空间参考 ID (SRID)。
    SELECT srid 
    FROM sde.st_geometry_columns 
    WHERE table_name='MYTABLE'
    AND owner='USER22';
    

    SRID 
    ---------- 
    4

    插入到此视图或表的任何记录都应使用此 SRID。

  5. 如果编辑的是版本化表,关于使用版本化视图进行编辑的说明,请参阅使用 SQL 编辑 Oracle 中的版本化数据。如果编辑的是非版本化表,请继续下一步骤。
  6. 当插入记录时,请使用 sde.version_user_ddl.retrieve_guid 工具插入下一个全局 ID 或 GUID 值。

    在本示例中,记录插入到版本化视图 mytable_vw 中。此表包含 ST_Geometry 列并且使用从步骤 4 获取的 SRID。

    INSERT INTO mytable_vw (globalid,shape) 
    VALUES
    (sde.version_user_ddl.retrieve_guid,(sde.st_polygon
    
    ('polygon ((10000 520000, 100008889 55000, 1045545983 234280934,
    10000 520000))',4)));
    
  7. 完成编辑后,请将编辑内容提交到数据库。
9/15/2013