Редактировать версионные данные в базе геоданных в IBM Informix в операционных системах Linux, UNIX и Windows можно двумя способами: изменяя именованную версию или редактируя версию Default в версионном представлении. См. описание каждой модели редактирования в разделе Обзор редактирования версионных данных с использованием SQL.
В большинстве случаев используется только одна модель редактирования. Однако можно использовать оба способа на одном сайте, поэтому в этом рабочем процессе описано, как использовать обе модели, чтобы вы могли видеть их отличия. Если вы используете только одну модель, прочитайте соответствующий раздел.
Редактирование версии Default
Можно использовать SQL для подключения к версии Default и редактировать версионное представление. Вам не нужно открывать сеанс редактирования. При начале редактирования вы автоматически подключаетесь к текущему состоянию версии Default.
Необходимо принимать изменения после каждой правки, чтобы избежать блокировки других пользователей, обращающихся к таблицам изменений таблицы или класса объекта.
Ниже приводится порядок изменения версионного представления (blic_evw). Правки в этом виде записываются в таблицу изменений версионной таблицы blic. Так как изменений всего несколько, вы выполните их непосредственно в версии Default.
- Подключитесь к базе данных из клиента SQL. Убедитесь, что вы подключились как пользователь с правами доступа для редактирования набора данных и версионного представления.
- Выполните редактирование версионного представления с помощью SQL.
В этом примере обновляется существующая строка для изменения имени владельца свойства.
UPDATE blic_evw SET propowner = 'C. O. Industry' WHERE lic = 44977;
- Внесите изменения (операция COMMIT).
COMMIT;
- Внесите следующую правку.
Новая запись будет добавлена в таблицу в версионном представлении.
INSERT INTO blic_evw (propowner, date_entered, location) VALUES ( 'Moe Esposito', CURRENT DATETIME, sde.ST_PointFromText ('point (0.0125662 0.0046711)', 12));
- Внесите изменения (операция COMMIT).
COMMIT;
Редактирование именованной версии
Вы получили ряд обновлений для класса объектов blic, поэтому вы решили выполнить правку в именованной версии.
Далее представлены функции, используемые для редактирования именованной версии базы геоданных, и их синтаксис:
Функция | Назначение | Синтаксис и описание |
---|---|---|
sde.create_version | Создать именованную версию базы геоданных. Если вы редактируете именованные версии (отличные от Default), всегда изменяйте собственную версию. Несколько пользователей не могут редактировать одну именованную версию с помощью версионных представлений. | EXECUTE FUNCTION sde.create_version ('<parent_version>', '<child_version>', <name_rule>, <access>, '<description>') |
sde.set_current_version | Укажите, к какой версии базы геоданных и состоянию нужно получить доступ. Вы получаете доступ к состоянию, на которое указывала версия при вызове set_current_version. | EXECUTE FUNCTION sde.set_current_version('<child_version>') |
sde.edit_version | Откройте и завершите сеанс редактирования именованной версии. Изменения в транзакции принимаются при каждом выполнении этой функции. | EXECUTE FUNCTION sde.edit_version('<child_version>',1) Укажите 1 для запуска сеанса редактирования. Укажите значение 2, чтобы завершить его. |
Параметры в выражениях выполнения представляют следующее:
- <parent_version> – эта та версия базы геоданных, на основе которой создана ваша версия.
- <child_version> – это именованная версия, которую вы редактируете.
- <name_rule> указывает, следует ли использовать заданное имя версии без изменений (2), или следует создать уникальное имя при указании дублирующегося имени (1).
- <access> – это уровень разрешений версии: 0 для частного доступа, 1 для общего и 2 для защищенного.
- <description> – текстовое описание дочерней версии.
Далее на основе версии Default будет создана именованная версия (myedits12111), и в нее будут внесены изменения через версионное представление blic_evw.
- В командной строке можно создать новую версию, которую вы будете редактировать.
EXECUTE FUNCTION sde.create_version ('sde.DEFAULT', 'myedits12111', 1, 1, 'versioned view edit version');
- Укажите созданную дочернюю версию для сеанса редактирования.
EXECUTE FUNCTION set_current_version('myedits12111');
Состояние редактирования будет задано как текущее состояние myedits12111.
- Начните сеанс редактирования, выполнив функцию edit_version и указав значение 1. 1 указывает на то, что нужно открыть сеанс редактирования.
EXECUTE FUNCTION sde.edit_version('myedits12111',1);
- В клиенте SQL запустите новую транзакцию для изменения blic_evw.
- Внесите правки в версионное представление с помощью SQL.
INSERT INTO blic_evw (propowner, date_entered, location) VALUES ( 'V. Nay', CURRENT DATETIME, sde.ST_PointFromText ('point (0.0125699 0.0046700)', 12)); UPDATE blic_evw SET (phone1,phone2) = ('555.111.2345','555.111.6789') WHERE propowner = 'Tella Chomsky'; UPDATE blic_evw SET exp_date = '2020-06-30 17:00:00' WHERE lid = 22903; UPDATE blic_evw SET location = sde.ST_PointFromText ('point (0.0125705 0.0046688)', 12)) WHERE lid = 8992; INSERT INTO blic_evw (codenum, propowner) VALUES (456, 'Anjo Badsu'); DELETE FROM blic_evw WHERE lid = 133;
- Примените изменения.
COMMIT;
- Остановите сеанс редактирования, вызвав процедуру edit_version, но на этот раз укажите значение 2. 2 указывает на то, что нужно завершить сеанс редактирования.
EXECUTE FUNCTION sde.edit_version('myedits12111',2);
- После завершения редактирования согласуйте и зафиксируйте изменения в ArcGIS Desktop, затем удалите версию базы геоданных, созданную вами в шаге 2. А если вы решили, что изменения не нужны, можно удалить версию, созданную в шаге 1, без согласования и фиксирования изменений.
EXECUTE FUNCTION sde.delete_version('myedits12111');
Текст, заключенный в одиночные кавычки, читается буквально. Поэтому текст в кавычках должен совпадать с текстом (как в нижнем или верхнем регистре, так и при смешанном регистре), как он хранится в базе данных.
Переключение с редактирования именованной версии на редактирование версии Default
Если требуется вернуться к редактированию версии Default (например, если руководитель говорит вам, что другим пользователям на участке требуется быстро внести правку), можно выполнить функцию set_default для перехода на редактирование версии Default. Правки, вносимые в версию Default, могут видеть другие пользователи, подключенные к Default, если они обновляют свои подключения.
Ниже представлена функция, используемая для редактирования версии Default базы геоданных, и ее синтаксис:
Функция | Назначение | Синтаксис и описание |
---|---|---|
sde.set_default | Возврат к редактированию текущего состояния версии Default. Выполните эту функцию, если вы редактировали именованную версию или определенное состояние версии Default, но хотите вернуться к редактированию текущей версии Default. | EXECUTE FUNCTION sde.set_default ( ) |
- В командной строке SQL выполните функцию set_default.
EXECUTE FUNCTION sde.set_default();
Сеанс теперь настроен для редактирования текущего состояния, на которое ссылается версия Default.
- Измените версионное представление blic_evw.
INSERT INTO blic_evw (propowner, b_name, date_entered, location) VALUES ( 'Ruben Gol', CURRENT DATETIME, 'Chez Coiffure', sde.ST_PointFromText ('point (0.0125650 0.0046721)', 12));
- Внесите изменения (операция COMMIT).
COMMIT;
Другие клиенты, указывающие на то же состояние версии Default или любое последующее состояние, могут обновить свои подключения, чтобы просмотреть на новый точечный объект.
Согласование и закрепление изменений в именованной версии
После внесения правок в именованную версию необходимо использовать ArcGIS для согласования, анализа и разрешения конфликтов, а затем закрепить изменения. Это можно сделать в ArcGIS Desktop с помощью инструмента геообработки Согласовать версии или скрипта Python. Более подробную информацию см. в разделах:
- Введение в согласование версий
- Согласование версии
- Краткий обзор по разрешению конфликтов
- Закрепление изменений
- Согласование версий
Как только изменения будут закреплены в версии Default, именованную версию можно будет удалить. Ниже представлена функция, используемая для удаления именованной версии после согласования и закрепления изменений в версии Default базы геоданных, и ее синтаксис:
Функция | Назначение | Синтаксис и описание |
---|---|---|
sde.delete_version | Удалить версию базы геоданных. | EXECUTE FUNCTION sde.delete_version('<child_version>') |
В следующем примере удаляется myedits12111 после согласования и закрепления всех изменений в версии Default:
EXECUTE FUNCTION sde.delete_version('myedits12111');