¿Es posible mantener las claves primarias en las clases de características versionadas sin código de arcobjects?

11

Dado que no es una buena idea usar ObjectID como claves primarias en las relaciones, será necesario utilizar alguna otra columna. ¿Es posible usar secuencias DBMS para llenar columnas de clave principal en clases de características versionadas, o tendré que escribir código de arcobjects para hacer esto?

Escuché que se pueden usar ID globales , pero los DBA que no son GIS que mantienen tablas relacionadas a menudo fruncen el ceño ante esta idea.

Kirk Kuykendall
fuente
Mover mi respuesta a un comentario ya que mi memoria es deficiente y podría no haber funcionado correctamente: Hace algunos años, intenté usar un activador de inserción en la tabla de adiciones. Si no recuerdo mal, funcionó. Eventualmente (y rápidamente) fui a una solución de ArcObjects (que llamó un procedimiento almacenado), porque era más fácil (para mí) porque no tenía que escribir un nuevo disparador al agregar / versionar una nueva clase de entidad.
Jay Cummins
2
Creo que fue un disparador DESPUÉS DE INSERTAR (oráculo) con una comprobación nula, por lo que la nueva fila obtendría el valor de la clave primaria existente si se moviera. Si fuera nulo, se llenaría. Tal vez estoy equivocado y no estaba funcionando bien y no me di cuenta. ¿Qué base de datos están usando?
Jay Cummins
@ Jay Gracias por elaborar. Mi razón principal para hacer esta pregunta es determinar si hay otros enfoques para este problema además del código de arcobjects que he escrito para hacer esto. No quiero decirle a alguien que mi solución es la única solución posible sin investigar a fondo. Y si es así, qué difícil es mantenerlo. Solo ocasionalmente escribo procedimientos almacenados, y la mayoría de eso está en el servidor sql. Sospecho que hay una manera de hacer esto en el nivel dbms (en lugar de los arcobjects) pero nunca lo he examinado detenidamente en todos los dbms.
Kirk Kuykendall

Respuestas:

7

Sí, es posible, con algunas advertencias.

Puede hacerlo con disparadores, pero la implementación será específica de DBMS (ya que tendrá que implementar un disparador DESPUÉS DE INSERTAR diferente utilizando el mecanismo de base de datos subyacente (específico).

Usted no será capaz de especificar una restricción UNIQUE de ningún tipo en ese campo desde las Tablas inserciones y la base pueden tener potencialmente entradas duplicadas para cada fila que modifique (Así es como las actualizaciones se modelan en bases de datos versionados). Si comete el error de hacer esto en la tabla base, eventualmente se dará cuenta de esto cuando sus operaciones de compresión comiencen a fallar ...

Ragi Yaser Burhum
fuente