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

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

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

提示提示:

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

步骤:
  1. 如果要编辑版本化表,请打开 MS-DOS 或 shell 提示符,然后执行 sdetable 命令来创建多版本化视图。

    有关说明,请参阅创建多版本化视图

  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. 如果要编辑版本化表,请按照在 Oracle 中使用多版本化视图和 SQL 编辑版本化数据中的说明创建用于编辑的版本,设置版本,然后启动编辑会话。如果要编辑非版本化表,请继续下一步骤。
  6. 当插入记录时,请使用 sde.version_user_ddl.retrieve_guid 工具插入下一个全局 ID 或 GUID 值。

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

    INSERT INTO mytable_mv (globalid,shape) 
    VALUES
    (sde.version_user_ddl.retrieve_guid,(sde.st_polygon
    
    ('polygon ((10000 520000, 100008889 55000, 1045545983 234280934,
    10000 520000))',4)));
    
  7. 完成编辑后,请将编辑内容提交到数据库。
  8. 完成编辑后,如果编辑的是版本化表,请按照在 Oracle 中使用多版本化视图和 SQL 编辑版本化数据所述停止编辑会话。

3/7/2012