Mehrfaches INSERT...RETURNING für Multi-Table-Updates in PostgreSQL
Einfügen von Daten in mehrere untergeordnete Tabellen, während auf neu eingefügte Daten aus a verwiesen wird Der übergeordnete Tisch kann eine herausfordernde Aufgabe sein. In diesem Zusammenhang bietet PostgreSQL eine leistungsstarke Lösung mit datenmodifizierenden Common Table Expressions (CTEs).
Zunächst können wir die Benutzer-ID einer neu eingefügten Zeile in einer übergeordneten Tabelle mithilfe der RETURNING-Klausel abrufen:
INSERT INTO table1 (default,'johnee','john','smith',default) RETURNING userid;
Um die mehreren INSERTs durchzuführen, können wir datenmodifizierende CTEs wie folgt verwenden:
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;
In Mit diesem Code führt der ins1 CTE den INSERT in Tabelle1 durch und gibt die Benutzer-ID zurück. Der ins2-CTE verwendet dann die Benutzer-ID von ins1, um Daten in Tabelle2 einzufügen. Schließlich verwendet der dritte INSERT die Benutzer-ID von ins1, um Daten in Tabelle3 einzufügen, und gibt optional die resultierende Benutzer-ID zurück.
Durch die Verwendung von datenmodifizierenden CTEs können wir mehrere INSERTs effizient verketten und sicherstellen, dass die neu eingefügten Daten im untergeordneten Element gespeichert werden Tabellen pflegt die notwendigen Beziehungen zur übergeordneten Tabelle.
Das obige ist der detaillierte Inhalt vonWie können die CTEs von PostgreSQL mehrere INSERTs mit RETURNING für Multi-Table-Updates effizient verarbeiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!