Чи можливо підтримувати первинні ключі на розроблених класах функцій без коду arbobjects?


11

Оскільки використовувати ObjectID в якості первинних ключів у відносинах не дуже добре , потрібно буде використовувати якийсь інший стовпець. Чи можна використовувати послідовності СУБД для заповнення стовпців первинного ключа у розрізнених класах функцій, чи для цього мені потрібно написати код аркобектів?

Я чув, що глобальні ідентифікатори можуть використовуватися , але таблиці, що не стосуються GIS, що підтримують підтримку, часто насуваються на цю ідею.


Переміщуючи свою відповідь на коментар, оскільки моя пам’ять погана, і, можливо, вона не спрацювала належним чином: Кілька років тому я спробував використовувати тригер вставок на таблиці доповнень. Якщо я пригадую правильно, це спрацювало. Я врешті-решт (і швидко) перейшов до рішення ArcObjects (що називається збереженою процедурою), тому що це було простіше (для мене), тому що мені не довелося писати новий тригер при додаванні / версії нового функціонального класу.
Jay Cummins

2
Я думаю, це був ПІСЛЯ тригера INracle (oracle) з нульовою перевіркою, тож новий рядок отримав би існуюче значення первинного ключа, якби його перемістили. Якби це було недійсним, воно заповниться. Можливо, я помиляюся, і це не працювало правильно, і я цього не усвідомлював. Яку базу даних використовуєте?
Jay Cummins

@Jay Дякую за розробку. Моя основна причина задавати це питання - визначити, чи існують інші підходи до цієї проблеми, окрім коду аркобектів, про який я писав. Я не хочу сказати комусь, що моє рішення - єдино можливе рішення, не ретельно досліджуючи. І якщо так, то як важко це підтримувати. Я лише час від часу пишу збережені процедури, і більшість з них є на сервері sql. Я підозрюю, що є спосіб зробити це на рівні dbms (замість arcobjects), але ніколи не пильно дивився на це у всіх dbms.
Кірк Куйкендалл

Відповіді:


7

Так, можливо - з кількома застереженнями.

Ви можете зробити це за допомогою тригерів, але реалізація буде специфічною для СУБД (оскільки вам доведеться реалізувати інший тригер ПІСЛЯ ВСТАВКИ за допомогою механізму базової бази даних (конкретного).

Ви не зможете вказати UNIQUE обмеження будь-якого виду в цьому полі, оскільки вкладки та базові таблиці можуть потенційно мати дублікати записів для кожної зміни, яку ви змінюєте (саме так моделюються оновлення у версіях баз даних). Якщо ви зробите помилку, роблячи це на базовій таблиці, ви зрештою зрозумієте це, коли ваші операції стискання почнуть провалюватися ...

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.