Страница 1 из 1
Триггер в базе геоданных
Добавлено: 04 окт 2011, 15:34
mant
Господа,
а никто не создавал ли триггеры в ArcGIS Esri в персональных или файловых базах геоданных?
Если было такое, может поделитесь опытом?
Re: Триггер в базе геоданных
Добавлено: 04 окт 2011, 16:51
Дмитрий Барышников
У ESRI предусмотрен свой механизм через domain, subtype и extension.
http://help.arcgis.com/en/sdk/10.0/arco ... 000000.htm
Re: Триггер в базе геоданных
Добавлено: 04 окт 2011, 17:44
mant
Посмотрел про кастомизацию объектов - мне кажется это слишком радикальный способ...
В сабтипах и доменах не увидел нужного функционала.
Опишу пример задачи: нужно при добавлении строки в таблицу "Растительность" автоматически создавать в ячейке новой строки в столбце "Идентификатор" уникальный циферный (или циферно-буквенный) код. Потом автоматом обновлять (переписывать) домен "Растительность" на основе таблицы "Растительность".
Re: Триггер в базе геоданных
Добавлено: 04 окт 2011, 19:47
Дмитрий Барышников
Обходные пути обычно не работают или перестают работать при любом обновлении - сервис пак или новая версия ПО. Не просто так ESRI не позволяет менять БД "напрямую" и даже не позволяет (ограниченно позволяет) формировать SQL запросы. У них очень специфично идет работа с таблицами БД - через временные альфа-таблицы и кеширование. А домены - они вообще в другой таблице содержаться - в специальной структуре, которую трогать крайне не рекомендуется. Тем более они ее меняют от версии к версии.
Для обновления домена есть инструменты в красном ящике - Toolboxes\System Toolboxes\Data Management Tools\Domains (Table To Domain и Domain To Table).
Re: Триггер в базе геоданных
Добавлено: 05 окт 2011, 13:39
yellow-sky
Bishop писал(а): У них очень специфично идет работа с таблицами БД - через временные альфа-таблицы и кеширование.
Кэширования в 9ке я на самом деле не припомню, а вот то что на каждую бизнес таблицу приходится еще feature таблица и две таблицы для поддержки версий - Add и Delete - это правда, если класс зарегистрирован как версионный. В этом случае написать систему триггеров будет сложновато - данные в бизнес таблицу будут попадать только когда вы будете проводить сжатие данных. А это не тот же самый момент, когда вы записываете данные в класс.
А вот если вы используете неверсионное редактирование - то тут вы можете попробовать навесить тригерры на свою бизнес таблицу. Но я крайне рекомендую поискать sde_ функции для работы с доменами. Простое изменение таблицы со значениями доменов при неосторожности могут разрушить её. Функции работы с ними не допустят этого.