Löschen von Werten in einer ST_Geometry-Spalte

Mit der SQL-Anweisung DELETE werden Datenzeilen aus einer bestimmten Tabelle oder Ansicht entfernt.

Schritte:
  1. Nachfolgend finden Sie Beispielabfragen, die Daten für jede unterstützte Datenbank löschen:
    • Im folgenden Beispiel werden Werte aus einer Geodatabase in Oracle unter Verwendung des räumlichen Datentyps basierend auf einem räumlichen Filter gelöscht:
      DELETE FROM sensitive_areas WHERE names
      (SELECT sa.names 
      FROM sensitive_areas sa, hazardous_sites hs
      WHERE sde.st_overlaps (sa.zone, sde.st_buffer (hs.location,.01)) = 1);
    • Im folgenden Beispiel werden Werte aus einer Geodatabase in PostgreSQL unter Verwendung des räumlichen Datentyps basierend auf einem räumlichen Filter gelöscht:
      DELETE FROM sensitive_areas 
      WHERE names EXISTS (SELECT sa.names
      FROM sensitive_areas sa, hazardous_sites hs
      WHERE st_overlaps (sa.zone, st_buffer (hs.location,.01)) = 't');
    • Verwenden Sie in IBM DB2 die folgende Anweisung:
      DELETE FROM sensitive_areas 
      WHERE names (SELECT sa.names 
      FROM sensitive_areas sa, hazardous_sites hs 
      WHERE db2gse.st_overlaps (sa.zone, db2gse.st_buffer (hs.location,.01)) = 1);
    • Informix unterstützt keine Änderungen an Tabellen oder Ansichten, die in einer Unterabfrage verwendet werden. Teilen Sie die Abfrage daher in zwei Teile auf: Erstellen Sie eine temporäre Tabelle für die Auswahl, und führen Sie den Löschvorgang über diese temporäre Tabelle aus.
      SELECT sa.name FROM
      sensitive_areas sa, hazardous_sites hs
      WHERE st_overlaps (sa.zone, st_buffer (hs.location,.01)) 
      INTO TEMP tempTable;
      
      DELETE FROM sensitive_areas WHERE name IN (select name from tempTable);

7/10/2012