Supprimer des valeurs d'une colonne spatiale ST_Geometry

L'instruction SQL DELETE supprime des lignes de données d'une table ou vue spécifiée.

Etapes :
  1. Ouvrez un éditeur SQL et connectez-vous à votre base de données.

    Connectez-vous à l'aide d'un compte doté des privilèges de suppression sur la table.

  2. Vous trouverez ci-dessous des requêtes d'exemple qui suppriment les données pour chaque base de données prise en charge :
    • Cet exemple supprime les valeurs d'une table dans Oracle à l'aide d'un filtre spatial :
      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);
      
    • Cet exemple supprime les valeurs d'une table dans PostgreSQL à l'aide d'un filtre spatial :
      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');
      
    • Cet exemple supprime les valeurs d'une table dans une base de données SQLite à l'aide d'un filtre spatial :
      DELETE FROM sensitive_areas WHERE names
      (SELECT sa.names 
       FROM sensitive_areas sa, hazardous_sites hs
       WHERE st_overlaps (sa.zone, st_buffer (hs.location,.01)) = 1);
      
    • Dans IBM DB2, utilisez l'instruction suivante :
      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 ne prend pas en charge la modification d'une table ou d'une vue utilisée dans une sous-requête. Vous devez par conséquent scinder la requête en deux parties : effectuez une sélection pour la placer dans une table temporaire et supprimez cette sélection en supprimant la table temporaire.
      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);
      
5/10/2014