Czy możliwe jest utrzymanie kluczy podstawowych w wersjonowanych klasach funkcji bez kodu arcobjects?

11

Ponieważ używanie Identyfikatorów obiektów jako kluczy podstawowych w relacjach nie jest dobrym pomysłem, konieczne będzie użycie innej kolumny. Czy możliwe jest użycie sekwencji DBMS do wypełnienia kolumn klucza podstawowego w wersjonowanych klasach funkcji, czy też muszę do tego napisać kod arcobjects?

Słyszałem, że można stosować identyfikatory globalne , ale utrzymywanie powiązanych tabel innych niż GIS DBA często nie podoba się ten pomysł.

Kirk Kuykendall
źródło
Przenoszę odpowiedź na komentarz, ponieważ moja pamięć jest słaba i mogła nie działać poprawnie: wiele lat temu próbowałem użyć wyzwalacza wstawiania w tabeli dodawania. Jeśli dobrze pamiętam, to zadziałało. W końcu (i szybko) przeszedłem do rozwiązania ArcObjects (zwanego procedurą przechowywaną), ponieważ było to łatwiejsze (dla mnie), ponieważ nie musiałem pisać nowego wyzwalacza podczas dodawania / wersjonowania nowej klasy funkcji.
Jay Cummins,
2
Myślę, że był to wyzwalacz PO WSTAWIENIU (wyrocznia) z zerowym sprawdzeniem, więc nowy wiersz uzyskałby istniejącą wartość klucza podstawowego, gdyby został przeniesiony. Gdyby był zerowy, zapełniłby się. Może się mylę i to nie działało poprawnie i nie zdawałem sobie z tego sprawy. Z jakiej bazy danych korzystasz?
Jay Cummins
@Jay Dziękujemy za opracowanie. Moim głównym powodem zadawania tego pytania jest ustalenie, czy istnieją inne podejścia do tego problemu poza kodem arcobjects, który napisałem, aby to zrobić. Nie chcę komuś powiedzieć, że moje rozwiązanie jest jedynym możliwym rozwiązaniem bez dokładnego zbadania. A jeśli tak, to jak trudno go utrzymać. Od czasu do czasu piszę procedury składowane, a większość z nich znajduje się na serwerze SQL. Podejrzewam, że istnieje sposób, aby to zrobić na poziomie dbms (zamiast arcobjects), ale nigdy nie przyjrzałem się temu dokładnie we wszystkich dbms.
Kirk Kuykendall

Odpowiedzi:

7

Tak, jest to możliwe - z kilkoma zastrzeżeniami.

Możesz to zrobić za pomocą wyzwalaczy - ale implementacja będzie specyficzna dla DBMS (ponieważ będziesz musiał zaimplementować inny wyzwalacz PO WSTAWIENIU przy użyciu mechanizmu bazowego (specyficznego).

Będzie nie być w stanie określić UNIQUE jakiegokolwiek rodzaju na tym polu, ponieważ tabele Wkładki i podstawy potencjalnie mogą mieć zduplikowane wpisy dla każdego wiersza, który modyfikować (W ten sposób aktualizacje są modelowane w wersjonowanymi baz danych). Jeśli popełnisz błąd, robiąc to na stole bazowym, w końcu zdasz sobie z tego sprawę, gdy operacje kompresji zaczną się nie powieść ...

Ragi Yaser Burhum
źródło