CÓMO

Utilizar SQL para insertar un valor en una columna de Id. global o GUID en vistas versionadas de una geodatabase corporativa en Oracle

Last Published: November 11, 2020

Resumen

Las instrucciones proporcionadas describen cómo insertar un valor en una columna de Id. global o Identificador único global (GUID) en una vista versionada de una geodatabase corporativa con Lenguaje estructurado de consultas (SQL) de Oracle.

Procedimiento

Los tipos de datos Id. Global y GUID almacenan cadenas de estilo de registro que constan de 36 caracteres encerrados en llaves. Estas cadenas únicamente identifican una entidad o fila de tabla dentro de una geodatabase y en todas las geodatabases. Así es como se rastrean las entidades en la replicación de geodatabase unidireccional y bidireccional y se utilizan en las relaciones o en cualquier aplicación que requiera identificadores únicos a nivel mundial.

En una relación, si un campo de Id. global es la clave de origen, la clave de destino debe ser un campo GUID. Agregue Id. globales a una clase de entidad en ArcCatalog haciendo clic con el botón derecho en ArcCatalog y haciendo clic en Agregar Id. globales. La geodatabase mantiene estos valores automáticamente. Cree el campo GUID en ArcCatalog y mantenga sus valores.

Al insertar una fila en una vista versionada con una columna de Id. global con SQL, proporcione un valor GUID único para la columna de Id. global.

Nota: Para obtener más información relacionada con Id. globales, GUID y replicación de geodatabase, consulte la Ayuda de ArcGIS Desktop en la sección Información relacionada.
Los ejemplos proporcionados son específicos de Oracle, pero los pasos son similares para otras bases de datos compatibles.
  1. Con la sesión iniciada como usuario SDE, ejecute el SQL que aparece a continuación para crear una función en el sistema de administración de bases de datos relacionales (RDBMS) para generar un GUID.

    Esta función crea un GUID utilizando la función SYS_GUID de Oracle y analiza el resultado en el formato GUID estándar o descomprimido de Microsoft.
CREATE OR REPLACE FUNCTION GDB_GUID RETURN NCHAR IS guid NCHAR (38); BEGIN guid := upper(RAWTOHEX(SYS_GUID())); RETURN '{'||substr(guid,1,8)||'-'||substr(guid,9,4)||'-'||substr(guid,13,4)||'-'||substr(guid,17,4)||'-'||substr(guid,21,12)||'}'; END; /
  1. Otorgue permisos para la función como el usuario SDE para ejecutar la función, con la sesión iniciada con un usuario que no sea SDE.
grant execute on gdb_guid to public;
  1. Cree la vista versionada.
"geodatabase administrator" table -o create_mv_view -T parcels_v -t parcels -i <port> -u <user> -p <password>
Nota: Para obtener más información sobre cómo crear y utilizar vistas versionadas en una geodatabase corporativa, consulte la Ayuda de ArcGIS Desktop.
  1. Busque el REGISTRATION_ID de la clase de entidad versionada desde la que se creó la vista.
select registration_id,table_name from sde.table_registry where table_name='PARCELS'; REGISTRATION_ID TABLE_NAME --------------- --------------------- 113 PARCELS
  1. En Tipos de geometría espacial, busque el Id. de referencia espacial (SRID) de la clase de entidad versionada a partir de la cual se creó la vista.
select srid from sde.st_geometry_columns where table_name='PARCELS' and owner='USER1'; SRID ---------- 7
  1. Cree una versión nueva para editar la vista versionada. Si utiliza una versión existente, omita este paso y vaya al siguiente paso.

    A diferencia de la edición de datos versionados en una sesión de edición de ArcGIS, no se realiza ninguna reconciliación de versiones interna con estas ediciones. Por lo tanto, se recomienda encarecidamente que las vistas versionadas no se utilicen para editar la versión predeterminada o cualquier versión que pueda estar sujeta a la edición o conciliación simultáneas por parte de otros usuarios, ya que no se detectarán conflictos. En su lugar, cree una versión específica para editar con vistas versionadas.

    Para crear una nueva versión:
    --Se crea una nueva versión. variable mvvers nvarchar2(97); exec :mvvers := 'PARCELS_42'; exec sde.version_user_ddl.create_version('SDE.DEFAULT',:mvvers,sde.version_util.C_take_name_as_given,sde.version_util.C_version_public,'Parcels WorkOrder 42 Version');
  2. Inserte un registro en la vista versionada como propietario de la tabla versionada.
Nota: Para obtener más información sobre cómo editar con vistas versionadas en una geodatabase corporativa, consulte la Ayuda de ArcGIS Desktop.
En el ejemplo siguiente:
'USER1' es el propietario de la tabla versionada y '113' es el registration_id que encontrado en el paso 4 anterior.

Para los tipos de geometría espacial, el valor de la columna espacial depende del tipo de geometría que se inserta, así como de los puntos que se van a insertar. '7' es el SRID de la tabla versionada encontrada en el paso 5 anterior.
Nota: Para obtener más información sobre el tipo ST_GEOMETRY y la inserción de geometría en una geodatabase corporativa, consulte la Ayuda de ArcGIS Desktop.
--Se define la versión que se va a editar. exec sde.version_util.set_current_version('USER1.PARCELS_42'); --Se inicia la sesión de edición. exec sde.version_user_ddl.edit_version('USER1.PARCELS_42',1); --Se realiza la inserción deseada. --En los tipos de geometría espacial, es posible insertar una forma. insert into parcels_v (objectid,globalid,shape) values (sde.version_user_ddl.next_row_id('USER1',113),sde.GDB_GUID,(sde.st_polygon ('polygon ((10000 520000, 100008889 55000, 1045545983 234280934, 10000 520000))',7))); --En los tipos de geometría espacial (Binary, LOB, etc.), se DEBE insertar una forma NULL: insert into parcels_v (objectid,globalid,shape) values (sde.version_user_ddl.next_row_id('USER1',113),sde.GDB_GUID, NULL); --Se detiene la sesión de edición. exec sde.version_user_ddl.edit_version('USER1.PARCELS_42',2); --Se confirma la edición. commit;

Id. de artículo:000009340

Obtener ayuda de expertos en ArcGIS

Contactar con soporte técnico

Descargar la aplicación de soporte de Esri

Ir a las opciones de descarga

Información relacionada

Descubrir más sobre este tema