Версионное представление включает представление базы данных, сохраненные процедуры, триггеры и функции, которые позволяют использовать Structured Query Language (SQL) для чтения или редактирования данных в базе геоданных, которая была зарегистрирована как версионная (традиционная). При запросе версионного вида можно просматривать данные в базовой бизнес-таблице и изменения, которые хранятся в дельта-таблицах. Триггеры, используемые версионными видами, обновляют дельта-таблицы в процессе редактирования версионного вида с помощью SQL.
В отличие от базы данных или пространственных видов, версионные виды не используются для изменения схемы таблицы или ограничения доступа к ней. Они используются для упрощения доступа к определенной версии таблицы или класса пространственных объектов. Следовательно вам не нужно указывать выражение Where при создании версионного вида. В итоге версионные виды содержат те же столбцы и строки, что и базовая таблица, которую они представляют.
Краткое описание функционирования версионных видов
С каждой версионной таблицей и с каждым классом пространственных объектов связаны дельта-таблицы, в которых регистрируются изменения. Когда к версионной таблице или классу пространственных объектов осуществляется доступ с помощью версионного вида, все записи в базовой таблице выбираются и сливаются с записями из дельта-таблиц, в результате чего выполняется построение вида, в котором представлены все изменения в базовой таблице в контексте конкретной версии.
Без версионных видов приложения, не поддерживающие работу с версиями баз геоданных, могут формировать запросы только напрямую к базовой таблице версионного класса пространственных объектов или версионной таблицы и не могут устанавливать подключение к дельта-таблицам. Благодаря использованию версионных видов такие приложения смогут осуществлять доступ к данным в дельта-таблицах.
Версионные виды не взаимодействуют с функциями, реализованными на уровне баз геоданных. Следовательно, их нельзя использовать для редактирования данных, относящихся к работе баз геоданных. Дополнительные сведения см. в разделе Какие типы данных могут редактироваться с помощью SQL?
Если при формировании запроса к версионному виду не указывать версию и состояние, запрос будет ссылаться на текущее состояние версии DEFAULT. Если другие пользователи вносят изменения в версию DEFAULT, тем самым изменяя ее состояние, на которое ссылается версия DEFAULT, последующие запросы будут адресованы к последнему по времени состоянию версии DEFAULT и соответствующим изменениям.
Если вы указали версию, к которой необходимо отправить запрос с использованием функции или процедуры set_current_version – ее обозначение может отличаться в вашей СУБД, вы будете ссылаться на состояние, на которое ссылалась версия на момент указания версии.
Например, если запустить функцию set_current_version, чтобы задать в качестве значения параметра версии именованную версию decedits, и эта версия будет указывать на состояние 4 в дереве состояний, все последующие SQL-запросы к decedits будут обращаться к данным в состоянии 4, даже если другие пользователи будут редактировать эту версию и ее состояние достигнет 25. Чтобы увидеть состояние 25, запустите функцию set_current_version повторно, чтобы задать для параметра версии значение Текущее состояние.
Создание версионного вида
Начиная с версии ArcGIS 10.1, версионные виды автоматически генерируются для таблиц и классов пространственных объектов, регистрируемых как версионные. Если вы зарегистрировали набор данных объектов как версионный, для каждого класса пространственных объектов в наборе данных объектов создается по одному версионному виду. Создаваемое представление будет иметь то же имя, что и таблица или класс объектов, с добавлением суффикса _evw.
Если данные были зарегистрированы как версионные в ArcGIS 10 или более ранней версии, вы можете создать версионное представление в ArcGIS Desktop 10.1 или более поздней версии. Для этого щелкните правой кнопкой мыши таблицу, класс пространственных объектов или набор данных, а затем выберите Управление и щёлкните Разрешить SQL доступ.