Maison >base de données >tutoriel mysql >Comment le RETURNING multi-colonnes peut-il améliorer les insertions PostgreSQL sur plusieurs tables ?

Comment le RETURNING multi-colonnes peut-il améliorer les insertions PostgreSQL sur plusieurs tables ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-01 07:47:09639parcourir

How Can Multi-Column RETURNING Enhance PostgreSQL Inserts Across Multiple Tables?

Utilisation du RETURNING multi-colonnes pour des insertions PostgreSQL efficaces

Dans le monde de la gestion des données, la possibilité d'effectuer plusieurs insertions avec un seul RETURNING Cette clause peut rationaliser les opérations et améliorer l’efficacité. Cet article explore les subtilités des opérations d'insertion multiple avec PostgreSQL 9.3, montrant comment insérer de manière transparente des données dans plusieurs tables enfants tout en récupérant l'ID nouvellement généré.

Le scénario implique trois tables :

  • table1 (parent) : user_id, nom d'utilisateur, nom, prénom, emp_date
  • table2 (enfant de table1) : pass_id, user_id, password
  • table3 (enfant de la table1) : user_dt_id, user_id, adresse, ville, téléphone

La tâche à accomplir est d'insérer des données dans la table1 et remplissez simultanément les colonnes user_id de la table2 et de la table3 avec le user_id nouvellement généré.

Pour ce faire, nous employons Expressions de table communes (CTE) modifiant les données. Les CTE nous permettent de combiner plusieurs instructions SQL en une seule unité, rationalisant ainsi le processus d'insertion. Voici une description détaillée de la mise en œuvre du CTE :

WITH ins1 AS (  -- Insert into 'table1'
   INSERT INTO table1 (username, name, surname)
   VALUES ('johnee', 'john', 'smith')
   RETURNING user_id
   ),
ins2 AS (  -- Insert into 'table2' with 'user_id' from 'ins1'
   INSERT INTO table2 (user_id, password)
   SELECT ins1.user_id, 'secret'
   FROM ins1  -- No need to return anything here
   )
INSERT INTO table3 (user_id, adress, city, phone)  -- Insert into 'table3' with 'user_id' from 'ins1'
SELECT ins1.user_id, ...
FROM ins1
RETURNING user_id;

Détails clés de la mise en œuvre :

  • Une liste de définitions de colonnes pour les instructions INSERT est recommandée pour éviter les problèmes potentiels résultant de modifications dans la structure de la table. .
  • Les valeurs DEFAULT redondantes sont omises, permettant un code concis et efficace.
  • La finale La clause RETURNING récupère l'ID utilisateur de la dernière opération INSERT, qui s'aligne généralement sur l'ID utilisateur de la table3.

En résumé, l'utilisation de multi-insertion avec RETURNING dans PostgreSQL permet une insertion par lot unique sur plusieurs tables, réduire la complexité et optimiser les performances. Les CTE de modification des données constituent un moyen pratique d'y parvenir, offrant une solution hautement fiable et efficace pour les flux de travail complexes d'insertion de données.

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!

Déclaration:
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