Bearbeiten nicht versionierter Geodatabase-Daten in DB2 per SQL

Mithilfe von SQL können Sie Daten in der Geodatabase aktualisieren, Daten in die Geodatabase einfügen und Daten aus nicht versionierten Tabellen daraus löschen, falls diese nicht an Geodatabase-Verhalten beteiligt sind. Unter Welcher Datentyp kann mit SQL bearbeitet werden? finden Sie Informationen zu den Typen von Daten und Geodatabase-Verhalten, die Sie nicht per SQL bearbeiten können.

Alle Daten, die unter der Geodatabase registriert sind, verfügen über eine vom System verwaltete, eindeutige Objekt-ID-Spalte (Zeilen-ID), die nicht null ist. Wenn Sie SQL zum Einfügen von Datensätzen in nicht versionierte Tabellen in der Geodatabase verwenden, müssen Sie für die Objekt-ID einen Einzelwert eingeben.

TippTipp:
Falls die Daten versioniert sind, müssen Sie zum Editieren eine Multiversioned View verwenden. Informationen hierzu finden Sie unter Bearbeiten von versionierten Daten in DB2 mithilfe von Multiversioned Views und SQL.

Diese Anleitung beschreibt die Aktualisierung der einzelnen Zeilen. In der Regel schreiben Sie eine Routine oder ein Client-Programm, um Objekt-IDs abzurufen und die Daten zu aktualisieren.

Schritte:
  1. Melden Sie sich über einen SQL-Editor, z. B. die Call Level Interface von DB2, bei der Datenbank an.

    Melden Sie sich bei der Datenbank als Benutzer an, der über die Berechtigung zum Bearbeiten der Daten verfügt.

  2. Fragen Sie die Tabelle TABLE_REGISTRY nach der Registrierungs-ID und dem Besitzer der Tabelle ab, in die Sie eine Zeile einfügen möchten.

    In diesem Beispiel werden die Registrierungs-ID und der Besitzername für die Tabelle "factories" zurückgegeben.

    SELECT REGISTRATION_ID,OWNER,TABLE_NAME
    FROM SDE.TABLE_REGISTRY
    WHERE TABLE_NAME = 'FACTORIES';
    
    REGISTRATION_ID   OWNER     TABLE_NAME
         5             gis       factories
  3. Melden Sie sich bei einer DB2-Client-Anwendung an, oder führen Sie eine SQL-PL-Routine aus, um die Prozedur "next_row_id" aufzurufen.
  4. Verwenden Sie die Registrierungs-ID und den Besitzernamen, die von der vorherigen SELECT-Anweisung (gis und 5) zurückgegeben wurden, wenn Sie die Routine "next_row_id" aufrufen, um die nächste verfügbare Zeilen-ID abzurufen. Diese Routine wird im Schema des Benutzers "sde" gespeichert.

    In diesem Beispiel ist "GIS" der Tabellenbesitzer und "5" die Registrierungs-ID der Tabelle. Die drei Fragezeichen stehen für die drei zurückgegebenen Parameter: ROWID, MSGCODE und MESSAGE.

    CALL SDE.next_row_id('GIS',5,?,?,?)
    Value of output parameters
    
    Parameter Name : O_ROWID
    Parameter Value : 18
    
    Parameter Name : O_MSGCODE
    Parameter Value : 0
    
    Parameter Name : O_MESSAGE
    Parameter Value : Procedure successfully
    completed.
    
    Return Status = 1
  5. Wechseln Sie zurück zur SQL-Oberfläche, um einen Datensatz in die Tabelle einzufügen.
    INSERT INTO FACTORIES
    (OBJECTID,NAME,SHAPE)
    VALUES(
    18,
    'megafactory',
    db2gse.ST_PolyFromText('POLYGON( ( 50 31, 54 31, 54 29, 50 29, 50 31) )',
    db2gse.coordref()..srid(101))
    );

Verwandte Themen


7/10/2012