CodeGym /Cours /SQL SELF /Utilisation de RETURNING pour récupérer des...

Utilisation de RETURNING pour récupérer des données après une insertion/mise à jour

SQL SELF
Niveau 22 , Leçon 0
Disponible

Aujourd’hui, on va ajouter un petit truc magique à notre boîte à outils : la commande RETURNING. C’est un outil super puissant qui te permet de récupérer direct les infos dont t’as besoin juste après une insertion, une mise à jour ou une suppression. Imagine : tu ajoutes une ligne dans une table et tu reçois tout de suite son identifiant unique. Pratique, non ? Bien sûr ! Allez, on s’y met !

Après avoir fait un INSERT, UPDATE ou DELETE, t’as parfois besoin de récupérer tout de suite les données qui ont été modifiées. Par exemple, après avoir ajouté une nouvelle ligne dans une table, tu veux connaître sa clé primaire générée automatiquement (l’identifiant unique). Plutôt que d’envoyer une requête séparée pour choper ces infos, tu peux tout faire d’un coup avec RETURNING.

Imaginons que tu ajoutes un nouvel étudiant dans la table students. Chaque étudiant a un identifiant unique (genre student_id), qui est généré automatiquement. Après avoir ajouté l’étudiant, tu veux utiliser cet identifiant pour enregistrer l’étudiant sur un cours. Sans RETURNING, tu devrais d’abord ajouter l’étudiant, puis faire une requête SELECT pour trouver son identifiant. Avec RETURNING, tout se fait en une seule requête !

Syntaxe de la commande RETURNING

La commande RETURNING se met à la fin des opérations INSERT, UPDATE et DELETE. Voilà la syntaxe générale :

-- Syntaxe INSERT :
INSERT INTO table (column1, column2, ...)
VALUES (value1, value2, ...)
RETURNING colonne;

-- Syntaxe UPDATE :
UPDATE table
SET column1 = value1
WHERE condition
RETURNING colonne;

-- Syntaxe DELETE :
DELETE FROM table
WHERE condition
RETURNING colonne;

RETURNING te permet de préciser quelles colonnes des lignes modifiées tu veux récupérer. Ça peut être une colonne précise (genre la clé primaire) ou plusieurs colonnes d’un coup.

Utiliser RETURNING avec INSERT

Regardons un exemple avec la table students :

CREATE TABLE students (
    student_id SERIAL PRIMARY KEY,
    first_name TEXT NOT NULL,
    last_name TEXT NOT NULL,
    email TEXT UNIQUE
);

On ajoute un nouvel étudiant et on récupère direct son identifiant :

INSERT INTO students (first_name, last_name, email)
VALUES ('Otto', 'Lin', 'otto.lin@example.com')
RETURNING student_id;

La requête va te renvoyer l’identifiant de l’étudiant ajouté :

student_id
1

Tu viens d’ajouter l’étudiant Otto Lin, et PostgreSQL t’a tout de suite filé son student_id. Pratique, hein ?

Maintenant, on va insérer et récupérer plusieurs colonnes d’un coup. Si t’as besoin non seulement du student_id, mais aussi du prénom et du nom de l’étudiant, tu peux les demander via RETURNING :

INSERT INTO students (first_name, last_name, email)
VALUES ('Alex', 'Ming', 'alex.ming@example.com')
RETURNING student_id, first_name, last_name;

Résultat :

student_id first_name last_name
2 Alex Ming

Utiliser RETURNING avec UPDATE

Parfois, après avoir mis à jour des données, tu veux savoir exactement quelles lignes ont été modifiées. RETURNING est parfait pour ça.

Imagine que l’étudiant Otto Lin veut changer son email. On met à jour ses infos et on récupère direct la ligne modifiée :

UPDATE students
SET email = 'lin.new@example.com'
WHERE student_id = 1
RETURNING student_id, email;

Résultat :

student_id email
1 lin.new@example.com

Maintenant tu sais exactement que l’email de l’étudiant avec student_id = 1 a bien été mis à jour.

Utiliser RETURNING avec DELETE

Quand tu supprimes des lignes d’une table, c’est parfois utile de savoir lesquelles ont été supprimées. Avec RETURNING, tu peux récupérer les données des lignes supprimées.

Par exemple. Imaginons que l’étudiant Peter Ming a été exclu. On le supprime de la table et on récupère les infos sur sa suppression :

DELETE FROM students
WHERE student_id = 2
RETURNING student_id, first_name, last_name;

Résultat :

student_id first_name last_name
2 Peter Ming

Maintenant tu es sûr que c’est bien Peter Ming qui a été supprimé.

Conseils pratiques

Utilise RETURNING dès que t’as besoin des données des lignes modifiées. Ça t’évite de faire des requêtes en trop à la base de données.

Minimise la quantité de données retournées. Si t’as juste besoin de la clé primaire, demande seulement ça.

En combinaison avec les transactions, RETURNING devient encore plus puissant. Par exemple, tu peux ajouter des données dans plusieurs tables liées en passant les identifiants grâce à RETURNING.

Erreurs courantes avec RETURNING

Souvent, les débutants oublient que RETURNING ne marche que sur les lignes modifiées. Par exemple, si ta requête UPDATE ou DELETE ne trouve aucune ligne, RETURNING va te renvoyer un résultat vide. Pas de panique, c’est normal. Vérifie juste que ta requête est correcte, ou gère ce cas dans ton code.

Et une autre erreur fréquente : essayer d’utiliser RETURNING sur des colonnes qui n’existent pas. Vérifie toujours que toutes les colonnes demandées existent bien dans ta table.

Maintenant tu sais comment RETURNING peut te simplifier la vie avec les données. C’est un de ces outils que tu vas vraiment kiffer quand tu feras des applis réelles. En route vers de nouveaux horizons !

2
Mission
SQL SELF, niveau 22, leçon 0
Bloqué
Insertion de données avec retour de l'identifiant
Insertion de données avec retour de l'identifiant
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION