Documentation PostgreSQL 8.0.25 | ||||
---|---|---|---|---|
Pr�c�dent | Arri�re rapide | Avance rapide | Suivant |
DELETE supprime les lignes qui satisfont la clause WHERE pour la table sp�cifi�e. Si la clause WHERE est absente, toutes les lignes de la table sont supprim�es. Le r�sultat est une table valide mais vide.
Astuce�: TRUNCATE est une extension PostgreSQL fournissant un m�canisme plus rapide pour supprimer toutes les lignes d'une table.
Par d�faut, DELETE supprime les lignes de la table sp�cifi�e et de ses sous-tables. Si vous souhaitez supprimer uniquement les lignes de la table mentionn�e, vous devez utiliser la clause ONLY.
Vous devez avoir le droit DELETE sur la table pour en supprimer des lignes ainsi que le droit SELECT pour toute table dont les valeurs sont lues dans la condition.
Le nom d'une table existante (qualifi� ou non du nom du sch�ma).
Une expression de valeur renvoyant une valeur de type boolean d�terminant les lignes � supprimer.
En cas de succ�s, une commande DELETE renvoie une information de la forme
DELETE nombre
Le nombre correspond au nombre de lignes supprim�es. Si nombre vaut 0, c'est qu'aucune ligne ne correspond � condition (ceci n'est pas consid�r� comme une erreur).
PostgreSQL vous laisse r�f�rencer des colonnes d'autres tables dans la condition WHERE. Par exemple, pour supprimer tous les films produits par un producteur donn�
DELETE FROM films WHERE id_producteur = producteurs.id AND producteurs.nom = 'foo';
En gros, une jointure s'�tablit entre films et producteurs dont toutes les lignes jointes sont supprim�es. Cette syntaxe n'est pas standard. Une fa�on plus standard de le faire est d'utiliser une sous-selection comme :
DELETE FROM films WHERE id_producteur IN (SELECT id FROM producteur WHERE nom = 'foo');
Dans certains cas, la jointure est plus facile � �crire ou plus rapide � ex�cuter que la sous-s�lection. Une objection � la jointure est qu'il n'y a pas une liste explicite des tables � utiliser, ce qui rend ce moyen plus difficile � mettre en œuvre ; de plus, cette m�thode ne permet pas les auto jointures.
Supprime tous les films � part les films musicaux :
DELETE FROM films WHERE genre <> 'Musique';
Efface toutes les lignes de la table films :
DELETE FROM films;
Cette commande est conforme au standard SQL, � l'exception de la possibilit� de r�f�rencer d'autres tables dans la clause WHERE, qui est une extension de PostgreSQL.
Pr�c�dent | Sommaire | Suivant |
DECLARE | Niveau sup�rieur | DROP AGGREGATE |