Редактирование неверсионных данных в базе геоданных в Informix с использованием SQL

Вы можете использовать SQL для обновления, добавления и удаления данных в неверсионных таблицах базы геоданных, если они не участвуют в объектах поведения базы геоданных. Сведения о типах данных и поведении базы геоданных, которые нельзя редактировать с помощью SQL, доступны в разделе Какие типы данных могут редактироваться с помощью SQL?.

ПримечаниеПримечание:

Если для неверсионной таблицы, предназначенной для редактирования с помощью SQL, включено архивирование, можно вместо самой таблицы редактировать ее архивное представление. Представление автоматически обновит конкретные поддерживаемые ArcGIS поля. См. раздел Что такое архивное представление и связанные с ним разделы для получения подробной информации.

Все данные, которые были зарегистрированы в базе геоданных, имеют уникальное непустое управляемое системой поле ObjectID (Row ID). Вам необходимо предоставить уникальное значение для ObjectID, когда вы используете SQL для добавления записей в неверсионные таблицы в базе геоданных. Вы можете использовать функцию Next_Row_ID для вставки значения в поле ObjectID с помощью SQL.

Ниже приводится перечень действий, выполнение которых позволит вам обновить одну строку неверсионной таблицы и вставить ObjectID за один раз. Удобнее всего создать процедуру или пользовательскую программу, чтобы получить идентификаторы ObjectID и обновить ваши данные.

Шаги:
  1. Войдите в базу данных из редактора SQL, например, I-SQL.

    Выполните вход как пользователь с правами доступа на редактирование данных.

  2. Выполните запрос к таблице table_registry, чтобы узнать регистрационный ID (registration ID) и владельца таблицы, в которую вы хотите добавить строку.

    В этом примере получены значения столбцов registration_id и owner таблицы factories.

    SELECT owner,registration_id,table_name
     FROM sde.table_registry
     WHERE table_name='factories';
    
    owner    registration_id    table_name
    editor1         7           factories
    
  3. Войдите, чтобы выполнить функцию next_row_id и получить следующее доступное значение идентификатора строки.
  4. Выполните функцию next_row_id. Владельцем этой функции является пользователь sde.

    В данном примере, editor1 является владельцем таблицы, а 7 – это регистрационный идентификатор (registration ID) таблицы factories.

    EXECUTE FUNCTION "sde".next_row_id('editor1',7);
    
    ret_code 0
    err_msg
    rowid 18
    
    1 row(s) retrieved.
    

  5. Вернитесь в редактор SQL и добавьте запись в таблицу.
    INSERT INTO factories
     VALUES (
      18,
      'makem'
      ST_PolyFromText('POLYGON((52 18,66 23,73 9,48 6,52 18),(59 18,67 18,67 13,59 13,59 18))',4326)
     );
    

Если таблица содержит поле GUID или Global ID, необходимо также указать уникальное значение в этом поле. Подробнее см. раздел Вставка значения в поле Global ID в Informix с помощью SQL.

Связанные темы

5/25/2014