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 ?
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;
Ce code suit un processus étape par étape :
Clé Points :
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!