Heim > Datenbank > MySQL-Tutorial > Wie können PostgreSQL-CTEs und INSERT...RETURNING Daten effizient in übergeordnete und untergeordnete Tabellen einfügen?

Wie können PostgreSQL-CTEs und INSERT...RETURNING Daten effizient in übergeordnete und untergeordnete Tabellen einfügen?

Mary-Kate Olsen
Freigeben: 2024-12-30 11:26:11
Original
921 Leute haben es durchsucht

How Can PostgreSQL CTEs and INSERT...RETURNING Efficiently Insert Data into Parent and Child Tables?

Einfügen mehrerer Werte in untergeordnete Tabellen mithilfe von INSERT...RETURNING und CTEs von PostgreSQL

Zum Einfügen einer neu extrahierten Benutzer-ID aus der übergeordneten Tabelle Tabelle1 in seine untergeordneten Tabellen table2 und table3 bietet PostgreSQL eine elegante Lösung mit datenmodifizierenden Common Table Expressions (CTEs).

Mithilfe von CTEs können wir mehrere INSERT-Anweisungen verketten, um mehrere Vorgänge in einer einzigen Transaktion auszuführen:

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

Dieser Code folgt einem Schritt-für-Schritt-Prozess:

  1. ins1: Fügt eine neue Zeile in Tabelle1 ein und ruft die neu generierte Benutzer-ID mit RETURNING ab. Dieser Schritt stellt die Verbindung zwischen den untergeordneten Tabellen her.
  2. ins2: Fügt die Benutzer-ID von ins1 zusammen mit dem Passwort in Tabelle2 ein.
  3. Fügt die Benutzer-ID von ins1 in Tabelle3 ein mit zusätzliche Daten wie Adresse, Stadt und Telefon.

Schlüssel Punkte:

  • Es ist ratsam, eine Spaltendefinitionsliste für INSERTs bereitzustellen, um die Datenintegrität sicherzustellen.
  • Standardwerte werden automatisch eingefügt, sodass Spalten mit Standardwerten weggelassen werden können die INSERT-Anweisung.
  • Die letzte RETURNING-Klausel in der dritten INSERT-Anweisung gibt die Benutzer-ID aus Tabelle3 zurück, obwohl sie normalerweise dieselbe ist als user_id aus Tabelle1.
  • Datenmodifizierende CTEs ermöglichen die Verkettung mehrerer INSERTs und anderer Datenmanipulationsvorgänge in einer einzigen Transaktion.

Das obige ist der detaillierte Inhalt vonWie können PostgreSQL-CTEs und INSERT...RETURNING Daten effizient in übergeordnete und untergeordnete Tabellen einfügen?. 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