Insertion de plusieurs lignes avec les CTE de PostgreSQL
Supposons que vous disposiez d'une base de données relationnelle avec trois tables : table1, table2 et table3. La table table1 contient des informations générales sur l'utilisateur, tandis que les tables table2 et table3 contiennent des données supplémentaires telles que des mots de passe et des adresses. Lorsque vous ajoutez un nouvel utilisateur dans la table1, vous souhaitez insérer simultanément l'ID utilisateur et d'autres données uniques dans les tables enfants table2 et table3.
Les CTE de modification de données de Postgres 9.3 fournissent une solution à ce scénario. Les CTE vous permettent d'enchaîner plusieurs opérations INSERT de manière efficace.
Voici comment utiliser les CTE modifiant les données pour accomplir votre tâche :
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 -- Nothing to return here ) INSERT INTO table3 (user_id, address, city, phone) SELECT ins1.user_id, ..., ... FROM ins1 RETURNING user_id;
Répartition du CTE :
Bonnes pratiques :
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!