Instrução

Usar SQL para inserir um valor em uma coluna Global ID ou GUID em um Enterprise Geodatabase, visualizações versionadas no Oracle

Last Published: November 11, 2020

Resumo

As instruções fornecidas descrevem como inserir um valor em uma coluna Global ID ou Globally Unique Identifier (GUID) em uma visualização do Geodatabase Enterprise versionada usando Structured Query Language (SQL) para Oracle.

Procedimento

Os tipos de dados de ID global e GUID armazenam strings de estilo de registro que consistem em 36 caracteres entre colchetes. Essas strings identificam exclusivamente uma feição ou linha de tabela em um geodatabase e entre geodatabases. É assim que as feições são rastreadas na replicação de geodatabase unilateral e bidirecional e são usadas ​​em relacionamentos ou em qualquer aplicativo que exija identificadores exclusivos globalmente.

Em um relacionamento, se um campo de ID global for a chave de origem, um campo GUID deve ser a chave de destino. Adicione IDs Globais a uma classe de feição no ArcCatalog clicando com o botão direito do mouse no ArcCatalog e clicando em Adicionar IDs Globais. O geodatabase mantém esses valores automaticamente. Crie o campo GUID no ArcCatalog e mantenha seus valores.

Ao inserir uma linha em uma visualização com versão com uma coluna de ID Global usando SQL, forneça um valor GUID exclusivo para a coluna de ID Global.

Nota: Para mais informações relacionadas a IDs globais, GUIDs e replicação de geodatabase, consulte a Ajuda do ArcGIS Desktop na seção Informações Relacionadas.
Os exemplos fornecidos são específicos para Oracle, mas as etapas são semelhantes para outros bancos de dados suportados.
  1. Enquanto estiver conectado como usuário SDE, execute o SQL a seguir para criar uma função no Relational Database Management System (RDBMS) para gerar um GUID.

    Essa função cria um GUID usando a função Oracle SYS_GUID e analisa o resultado no formato GUID padrão ou descompactado da Microsoft.
CRIAR OU SUBSTITUIR FUNÇÃO 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. Conceda permissões para a função como o usuário SDE para executar a função, enquanto estiver conectado como um usuário diferente de SDE.
concede a execução em gdb_guid ao público;
  1. Crie a visualização versionada.
"geodatabase administrator" table -o create_mv_view -T parcels_v -t parcels -i <port> -u <user> -p <password>
Nota: Para obter mais informações sobre como criar e usar visualizações versionadas no Geodatabase Enterprise, consulte a Ajuda do ArcGIS Desktop.
  1. Encontre o REGISTRATION_ID da classe de feição versionada a partir da qual a visualização foi criada.
select registration_id,table_name from sde.table_registry where table_name='PARCELS'; REGISTRATION_ID TABLE_NAME --------------- --------------------- 113 PARCELS
  1. Para tipos de geometria espacial, localize o ID de referência espacial (SRID) da classe de feição com versão a partir da qual a visualização foi criada.
select srid from sde.st_geometry_columns where table_name='PARCELS' and owner='USER1'; SRID ---------- 7
  1. Crie uma nova versão para editar a visualização com versão. Se estiver usando uma versão existente, pule esta etapa e vá para a próxima.

    Ao contrário da edição de dados com versão em uma sessão de edição do ArcGIS, nenhuma reconciliação de versão interna é feita com essas edições. Portanto, é altamente recomendável que as visualizações com versão não sejam usadas para editar a versão padrão ou qualquer versão que possa estar sujeita à edição ou reconciliação simultânea por outros usuários, pois os conflitos não serão detectados. Em vez disso, crie uma versão especificamente para edição com visualizações versionadas.

    Para criar uma nova versão:
    --Criar uma nova versão. 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. Insira um registro na visualização versionada como o proprietário da tabela versionada.
Nota: Para obter mais informações sobre a edição de visualizações versionadas no Geodatabase Enterprise, consulte a Ajuda do ArcGIS Desktop.
No exemplo abaixo:
'USER1' é o proprietário da tabela versionada, e '113' é o registration_id encontrado na Etapa 4 acima.

Para os tipos de Geometria Espacial, o valor da coluna Espacial depende do tipo de geometria que está sendo inserida, bem como dos pontos a serem inseridos. '7' é o SRID da tabela Versionada localizada na Etapa 5 acima.
Nota: Para obter mais informações sobre o tipo ST_GEOMETRY e inserção de geometria no Geodatabase Enterprise, consulte a Ajuda do ArcGIS Desktop.
--Defina a versão a editar. exec sde.version_util.set_current_version('USER1.PARCELS_42'); --Inicie a sessão de edição. exec sde.version_user_ddl.edit_version('USER1.PARCELS_42',1); --Execute a inserção desejada. --Para tipos de GEOMETRIA espaciais, uma forma pode ser inserida. insira em valores parcels_v (objectid,globalid,shape) (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))); --For Non-Spatial GEOMETRY Types (Binary, LOB, etc.) a NULL shape MUST be inserted: insert into parcels_v (objectid,globalid,shape) values (sde.version_user_ddl.next_row_id('USER1',113),sde.GDB_GUID, NULL); --Pare a sessão de edição. exec sde.version_user_ddl.edit_version('USER1.PARCELS_42',2); --Confirme a edição. commit;

ID do Artigo: 000009340

Receba notificações e encontre soluções para problemas novos ou comuns

Obtenha respostas resumidas e soluções de vídeo do nosso novo chatbot de IA.

Baixe o Aplicativo de Suporte da Esri

Informações Relacionadas

Descubra mais sobre este tema

Obtenha ajuda de especialistas do ArcGIS

Entre em contato com Suporte Técnico

Baixe o Aplicativo de Suporte da Esri

Ir para as opções de download