Insérer, modifier, supprimer
DébutantINSERT, UPDATE et DELETE modifient les données ; RETURNING renvoie les lignes affectées sans requête supplémentaire.
INSERT INTO utilisateurs (email, nom)
VALUES ('alice@exemple.fr', 'Alice'),
('bob@exemple.fr', 'Bob')
RETURNING id, email;
UPDATE utilisateurs
SET actif = false
WHERE email = 'bob@exemple.fr'
RETURNING id, actif;
DELETE FROM utilisateurs
WHERE actif = false AND cree_le < now() - interval '2 years';
Piège : un
UPDATEou unDELETEsansWHEREtouche toute la table. Habituez-vous à écrire d'abord leSELECTavec le mêmeWHERE, ou à travailler dans une transaction :BEGIN; ... ROLLBACK;tant que vous n'êtes pas sûr.
Vider une table#
TRUNCATE utilisateurs; est bien plus rapide que DELETE sur toute la table (il ne parcourt pas les lignes), mais il pose un verrou exclusif et ne déclenche pas les triggers ON DELETE ligne par ligne.