DELETE

Name

DELETE  --  supprime des lignes d'une table.

Synopsis

DELETE FROM [ ONLY ] table [ WHERE condition ]
  

Entrées

table

Nom d'une table existante.

condition

c'est une requête sélection SQL qui retourne les lignes qui ont été supprimées.

Voir SELECT pour plus d'information sur la clause WHERE.

Sorties

DELETE count

Message retourné si les écritures ont été supprimées. count est le nombre de lignes supprimés.

Si count est à 0, aucune ligne n'a été supprimée.

Description

DELETE supprime les lignes qui satisfont la clause WHERE, depuis la table spécifiée.

Si la condition (clause WHERE) est absente, l'effet est la suppression de toutes les lignes de la table. Le résultat est une table valide mais vide.

Tip

TRUNCATE est une extension PostgreSQL qui fournit un mécanisme plus rapide pour supprimer toutes les lignes d'une table.

Par défaut DELETE supprimera les tuples dans la table spécifiée et toutes ses sous-tables. Si vous voulez simplement faire une mise à jour de la table mentionnée, vous devez utiliser la clause ONLY.

Vous devez avoir accès en écriture à la table pour la modifier, aussi bien qu'accès en lecture sur toutes les tables dont les valeurs sont lues dans la condition.

Utilisation

Supprimons tous les films musicaux :

DELETE FROM films WHERE kind <> 'Musical';
SELECT * FROM films;

 code  |           title           | did | date_prod  |  kind   | len
-------+---------------------------+-----+------------+---------+-------
 UA501 | West Side Story           | 105 | 1961-01-03 | Musical | 02:32
 TC901 | The King and I            | 109 | 1956-08-11 | Musical | 02:13
 WD101 | Bed Knobs and Broomsticks | 111 |            | Musical | 01:57
(3 rows)

Nettoyons la table films:

DELETE FROM films;
SELECT * FROM films;

 code | title | did | date_prod | kind | len
------+-------+-----+-----------+------+-----
(0 rows)

Compatibilité

SQL92

SQL92 fournit une commande DELETE positionnée :

DELETE FROM table WHERE
    CURRENT OF cursor
    
cursor identifie un curseur ouvert. Les curseurs interactifs dans PostgreSQL sont en lecture seule.