Einfügen mehrerer Zeilen mit den CTEs von PostgreSQL
Angenommen, Sie haben eine relationale Datenbank mit drei Tabellen: Tabelle1, Tabelle2 und Tabelle3. Tabelle 1 enthält allgemeine Benutzerinformationen, während die Tabellen 2 und 3 zusätzliche Daten wie Passwörter und Adressen enthalten. Wenn Sie einen neuen Benutzer in Tabelle 1 hinzufügen, möchten Sie gleichzeitig die Benutzer-ID und andere eindeutige Daten in die untergeordneten Tabellen Tabelle 2 und Tabelle 3 einfügen.
Postgres 9.3 bietet datenmodifizierende CTEs eine Lösung für dieses Szenario. Mit CTEs können Sie mehrere INSERT-Vorgänge effizient verketten.
So verwenden Sie datenmodifizierende CTEs, um Ihre Aufgabe zu erfüllen:
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;
Aufschlüsselung des CTE:
Best Practices:
Das obige ist der detaillierte Inhalt vonWie können PostgreSQL-CTEs effizient mehrere Zeilen in mehrere Tabellen einfügen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!