Maison > base de données > tutoriel mysql > Comment puis-je chaîner efficacement plusieurs instructions INSERT avec RETURNING dans PostgreSQL ?

Comment puis-je chaîner efficacement plusieurs instructions INSERT avec RETURNING dans PostgreSQL ?

Mary-Kate Olsen
Libérer: 2024-12-31 10:52:09
original
544 Les gens l'ont consulté

How Can I Efficiently Chain Multiple INSERT Statements with RETURNING in PostgreSQL?

Chaînage de plusieurs INSERT avec RETURNING dans PostgreSQL

Lorsque vous travaillez avec des structures de bases de données hiérarchiques, il est souvent nécessaire d'insérer des données dans plusieurs tables avec des dépendances. Dans PostgreSQL, une combinaison de CTE modifiant les données et de la clause RETURNING fournit une solution efficace.

Pour insérer une nouvelle ligne dans la table parent table1 et remplir les lignes pertinentes dans les tables enfants table2 et table3, suivez ces étapes :

WITH ins1 AS (
   INSERT INTO table1 (username, name, surname)
   VALUES ('johnee','john','smith')
   RETURNING user_id
   )
, ins2 AS (
   INSERT INTO table2 (user_id, password)
   SELECT ins1.user_id, 'secret'
   FROM   ins1
   )
INSERT INTO table3 (user_id, adress, city, phone)
SELECT ins1.user_id, ...
FROM   ins1
RETURNING user_id;
Copier après la connexion

Décomposer le CTE Chaîne :

  • Le premier CTE, ins1, insère une nouvelle ligne dans la table1 et renvoie l'identifiant utilisateur généré.
  • Le deuxième CTE, ins2, insère une ligne correspondante dans la table2 avec le user_id renvoyé par ins1.
  • L'instruction INSERT finale utilise le user_id de ins1 pour insérer une ligne dans tableau3. La clause RETURNING facultative renvoie l'ID utilisateur résultant, généralement à partir d'une séquence ou d'une valeur par défaut.

Avantages de l'utilisation de CTE de modification des données :

  • Inserts de chaînage : Les CTE vous permettent d'enchaîner plusieurs instructions INSERT, garantissant ainsi le bon ordre des opérations.
  • Simplicité : L'utilisation de AVEC CTE rend la requête plus lisible et maintenable.
  • Efficacité : Les CTE peuvent améliorer les performances en optimisant les ordre d'exécution des instructions INSERT.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal