Heim > Datenbank > MySQL-Tutorial > Wie kann ich mehrere INSERT-Anweisungen effizient mit RETURNING in PostgreSQL verketten?

Wie kann ich mehrere INSERT-Anweisungen effizient mit RETURNING in PostgreSQL verketten?

Mary-Kate Olsen
Freigeben: 2024-12-31 10:52:09
Original
544 Leute haben es durchsucht

How Can I Efficiently Chain Multiple INSERT Statements with RETURNING in PostgreSQL?

Verkettung mehrerer INSERTs mit RETURNING in PostgreSQL

Beim Arbeiten mit hierarchischen Datenbankstrukturen ist es oft notwendig, Daten in mehrere Tabellen mit Abhängigkeiten einzufügen. In PostgreSQL bietet eine Kombination aus datenmodifizierenden CTEs und der RETURNING-Klausel eine effiziente Lösung.

Um eine neue Zeile in die übergeordnete Tabelle Tabelle1 einzufügen und die relevanten Zeilen in den untergeordneten Tabellen Tabelle2 und Tabelle3 zu füllen, befolgen Sie diese Anweisungen Schritte:

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;
Nach dem Login kopieren

Aufschlüsselung des CTE Kette:

  • Der erste CTE, ins1, fügt eine neue Zeile in Tabelle1 ein und gibt die generierte Benutzer-ID zurück.
  • Der zweite CTE, ins2, fügt eine entsprechende Zeile in Tabelle2 ein mit der von ins1 zurückgegebenen Benutzer-ID.
  • Die letzte INSERT-Anweisung verwendet die Benutzer-ID von ins1, um eine Zeile einzufügen Tabelle3. Die optionale RETURNING-Klausel gibt die resultierende Benutzer-ID zurück, normalerweise aus einer Sequenz oder einem Standardwert.

Vorteile der Verwendung datenmodifizierender CTEs:

  • Einfügungen verketten: Mit CTEs können Sie mehrere INSERT-Anweisungen verketten und so die richtige Reihenfolge sicherstellen Operationen.
  • Einfachheit: Die Verwendung von WITH CTEs macht die Abfrage lesbarer und wartbarer.
  • Effizienz: CTEs können die Leistung verbessern, indem sie die optimieren Ausführungsreihenfolge der INSERT-Anweisungen.

Das obige ist der detaillierte Inhalt vonWie kann ich mehrere INSERT-Anweisungen effizient mit RETURNING in PostgreSQL verketten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage