È possibile mantenere le chiavi primarie su featureclass con versione senza codice arcobjects?


11

Poiché non è una buona idea utilizzare ObjectID come chiavi primarie nelle relazioni, sarà necessario utilizzare qualche altra colonna. È possibile utilizzare sequenze DBMS per popolare colonne di chiavi primarie in featureclass con versione, o dovrò scrivere codice arcobjects per farlo?

Ho sentito che gli ID globali possono essere utilizzati , ma i DBA non GIS che mantengono le tabelle correlate spesso disapprovano questa idea.


Spostando la mia risposta a un commento poiché la mia memoria è scarsa e potrebbe non funzionare correttamente: un certo numero di anni fa, ho provato a utilizzare un trigger di inserimento nella tabella add. Se ricordo bene, ha funzionato. Alla fine (e rapidamente) sono andato a una soluzione ArcObjects (che chiamava una procedura memorizzata), perché era più facile (per me) perché non dovevo scrivere un nuovo trigger durante l'aggiunta / versione di una nuova featureclass.
Jay Cummins,

2
Penso che sia stato un trigger AFTER INSERT (oracle) con un controllo null, quindi la nuova riga otterrebbe il valore della chiave primaria esistente se fosse spostata. Se fosse nullo, si popolerebbe. Forse mi sbaglio e non funzionava bene e non me ne sono reso conto. Quale database stanno usando?
Jay Cummins,

@Jay Grazie per l'elaborazione. Il mio motivo principale per porre questa domanda è determinare se ci sono altri approcci a questo problema oltre al codice arcobjects che ho scritto per fare questo. Non voglio dire a qualcuno che la mia soluzione è l'unica soluzione possibile senza indagare a fondo. E se è così, quanto è difficile mantenerlo. Scrivo solo occasionalmente procedure memorizzate e la maggior parte di queste è su SQL Server. Ho il sospetto che ci sia un modo per farlo a livello di dbms (invece di arcobjects) ma non l'ho mai esaminato da vicino in tutti i dbms.
Kirk Kuykendall,

Risposte:


7

Sì, è possibile - con alcuni avvertimenti.

Puoi farlo con i trigger, ma l'implementazione sarà specifica per DBMS (poiché dovrai implementare un diverso trigger AFTER INSERT utilizzando il meccanismo del database (specifico) sottostante.

Sarete Non essere in grado di specificare un vincolo UNIQUE di qualsiasi tipo su quel campo dal momento che le tabelle di inserti e la base possono potenzialmente avere voci duplicate per ogni riga che si modifica (E 'così che gli aggiornamenti sono modellati nei database di versione). Se commetti l'errore di farlo sulla tabella di base, alla fine lo capirai quando le tue operazioni di compressione iniziano a fallire ...

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.