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

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

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

Чтобы получить эту информацию, выполните запрос к системной таблице ArcSDE sde_table_registry, чтобы получить регистрационный ID (registration ID) таблицы, в которую вы хотите добавить запись. После того, как вы получили регистрационный ID (registration ID), вы можете идентифицировать соответствующую i-таблицу, поскольку i-таблицы связаны со своими бизнес-таблицами по регистрационному идентификатору. i-таблица хранится в схеме пользователя, которому принадлежит соответствующая таблица.

Включите функцию Next_RowID в выражение INSERT, чтобы заполнить поле ObjectID следующим доступным значением.

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

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

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

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

  2. Используйте функцию Next_RowID, чтобы заполнить поле ObjectID.

    В данном примере столбец site_id является полем ObjectID; используется таблица outbreak, которая хранится в схеме hmoot.

    INSERT INTO hmoot.outbreak (site_id, med_code,num_affected, shape) 
    VALUES 
    (sde.next_rowid('hmoot', 'outbreak'), 
    'v-22a', 
    3, 
    ST_Point('point (12 36))', 12);
    
  3. Вы можете продолжить редактирование или, если вы закончили редактирование, внести изменения в базу данных (операция COMMIT).

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

9/11/2013