Editing nonversioned geodatabase data in Oracle using SQL

You can use SQL to update, insert data into, and delete data from nonversioned tables in the geodatabase if they do not participate in geodatabase behavior. See What type of data can be edited using SQL? for information on the types of data and geodatabase behavior you cannot edit with SQL.

NoteNote:

If the nonversioned table you want to edit using SQL is enabled for archiving, you must edit the table's archive view rather than the table itself. The view will automatically update certain ArcGIS-maintained fields. See What is an archive view and it's related topics for more information.

All data that is registered with the geodatabase has a system-maintained, unique, not-null ObjectID (Row ID) field. When you use SQL to insert records into nonversioned tables in the geodatabase, you must provide a unique value for the ObjectID. You can use the Next_RowID stored procedure to insert a value to the ObjectID field using SQL.

Use the Next_RowID function from the sde.gdb_util package to generate a new, unique value for the ObjectID.

The Next_RowID function uses two parameters: table owner and table name. With the table owner and table name, an SQL statement can be created to populate the ObjectID field.

NoteNote:

The next available ObjectID is not necessarily the next sequential number after the last inserted ObjectID. ObjectIDs for some client applications are assigned in batches, so the next available ObjectID may be many numbers higher than the last one you used. Also, any unused ObjectIDs from the batch are returned to the pool of available values, which means the next available ObjectID value may actually be a lower number than the one you inserted last.

Steps:
  1. Log in to the database from an SQL editor such as SQL*Plus.

    Be sure to log in to the database as a user who has permission to edit the data.

  2. Include the sde.gdb_util.next_rowid function with the owner and table names in the INSERT statement to insert the next available value into the ObjectID field.

    In this example, an ST_Geometry line segment is inserted in the STREAMS feature class.

    INSERT INTO eng2.streams (OBJECTID,NAME,SHAPE) 
     VALUES (
      sde.gdb_util.next_rowid('ENG2', 'STREAMS'), 
      'TRANQUIL', 
      sde.ST_GEOMETRY('linestring (750 150, 750 750)', 4326) 
     );
    
  3. You can continue editing or, if you are done editing, commit your edits to the database.

If the table also contains a GUID or Global ID field, you must provide a unique value for this field as well. See Next_GlobalID for more information.

Related Topics

6/19/2015