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

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

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

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

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

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

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

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

Шаги:
  1. Войдите в любой редактор SQL, например, редактор SQL в Microsoft SQL Server Management Studio.

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

  2. Выполните процедуру Next_RowID, чтобы получить значение для поля ObjectID.

    В этом примере gisdata4 – это схема, в которой хранится таблица farmland.

    DECLARE @id as integer
    EXEC dbo.next_rowid 'gisdata4', 'farmland', @id OUTPUT;
    SELECT @id "Next ObjectID";
    
    Next ObjectID
    423
    
  3. Используйте значение, полученное в предыдущем выражении, чтобы заполнить поле ObjectID для записи, которую вы добавляете.
    INSERT INTO gisdata4.farmland (objectid,crop,shape)
     VALUES (
      423,
      'oats',
      geography::STGeomFromText('POLYGON((-111.85897004 33.25178949,
    -111.86899617 33.25065270, -111.86887014 33.25062350,
    -111.85884555 33.25176951, -111.85897004 33.25178949))', 4267)
     );
    
  4. Вы можете продолжить редактирование или, если вы закончили редактирование, внести изменения в базу данных (операция COMMIT).

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

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

5/25/2014