</>
Plan du cours — 3/64

Insérer, modifier, supprimer

Débutant

INSERT, 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 UPDATE ou un DELETE sans WHERE touche toute la table. Habituez-vous à écrire d'abord le SELECT avec le même WHERE, 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.