Maison > base de données > tutoriel mysql > Comment les CTE et INSERT...RETURNING de PostgreSQL peuvent-ils insérer efficacement des données dans les tables parent et enfant ?

Comment les CTE et INSERT...RETURNING de PostgreSQL peuvent-ils insérer efficacement des données dans les tables parent et enfant ?

Mary-Kate Olsen
Libérer: 2024-12-30 11:26:11
original
921 Les gens l'ont consulté

How Can PostgreSQL CTEs and INSERT...RETURNING Efficiently Insert Data into Parent and Child Tables?

Insertion de plusieurs valeurs dans des tables enfants à l'aide de INSERT...RETURNING et CTE de PostgreSQL

Pour insérer un user_id nouvellement extrait de la table parent table1 dans ses tables enfants table2 et table3, PostgreSQL fournit une solution élégante utilisant des expressions de table communes modifiant les données (CTE).

Grâce aux CTE, nous pouvons enchaîner plusieurs instructions INSERT pour exécuter plusieurs opérations en une seule transaction :

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

Ce code suit un processus étape par étape :

  1. ins1 : Insère une nouvelle ligne dans la table1 et récupère l'ID utilisateur nouvellement généré à l'aide de RETURNING. Cette étape établit la connexion entre les tables enfants.
  2. ins2 : Insère l'ID utilisateur de ins1 dans la table2 avec le mot de passe.
  3. Insère l'ID utilisateur de ins1 dans la table3 avec données supplémentaires telles que l'adresse, la ville et le téléphone.

Clé Points :

  • Il est conseillé de fournir une liste de définitions de colonnes pour les INSERT afin de garantir l'intégrité des données.
  • Les valeurs par défaut sont automatiquement insérées, de sorte que les colonnes avec des valeurs par défaut peuvent être omises dans l'instruction INSERT.
  • La clause RETURNING finale de la troisième instruction INSERT renvoie l'identifiant utilisateur de la table3, bien qu'il soit généralement le même que l'instruction INSERT. user_id de la table1.
  • Les CTE de modification des données permettent d'enchaîner plusieurs INSERT et autres opérations de manipulation de données en une seule transaction.

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