Heim > Datenbank > MySQL-Tutorial > Wie kann ich die automatische Nummerierung für zusammengesetzte Schlüssel in PostgreSQL effizient implementieren?

Wie kann ich die automatische Nummerierung für zusammengesetzte Schlüssel in PostgreSQL effizient implementieren?

Patricia Arquette
Freigeben: 2025-01-07 19:46:42
Original
225 Leute haben es durchsucht

How Can I Efficiently Implement Auto-Numbering for Compound Keys in PostgreSQL?

Automatische Nummerierung zusammengesetzter PostgreSQL-Schlüssel: Ein vereinfachter Ansatz

Um einzelne Adressänderungen im Laufe der Zeit zu verfolgen, ist eine eindeutige Kennung für jede Änderung im Verlauf einer Person erforderlich. Während es komplexe automatische Nummerierungsschemata gibt, bietet PostgreSQL eine sauberere und effizientere Lösung mit seriellen oder IDENTITY-Spalten.

Komplexität vermeiden

Traditionelle Methoden führen oft zu komplizierten, fehleranfälligen Nummerierungssystemen. Die integrierten Funktionen von PostgreSQL bieten eine optimierte Alternative.

Die empfohlene Lösung: Serien-/IDENTITÄTSSpalten

Die Nutzung der serial- oder IDENTITY-Spalte von PostgreSQL vereinfacht den Prozess erheblich. Dadurch entfällt die Notwendigkeit, komplexe Abläufe zu verwalten.

Implementierungsbeispiel

So implementieren Sie dies in einer address_history Tabelle:

<code class="language-sql">CREATE TABLE address_history (
  address_history_id serial PRIMARY KEY,
  person_id int NOT NULL REFERENCES people(id),
  created_at timestamptz NOT NULL DEFAULT current_timestamp,
  previous_address text
);</code>
Nach dem Login kopieren

Laufende Nummern abrufen

Um die fortlaufende Nummer für jede Adressänderung pro Person zu erhalten, verwenden Sie die row_number()Fensterfunktion:

<code class="language-sql">CREATE VIEW address_history_nr AS
SELECT *, row_number() OVER (PARTITION BY person_id ORDER BY address_history_id) AS adr_nr
FROM   address_history;</code>
Nach dem Login kopieren

Diese Ansicht dient als direkter Ersatz für die address_history-Tabelle in Abfragen und stellt die fortlaufende Nummer (adr_nr) für jede Adressänderung bereit.

Wichtige Verbesserungen

  • Verwendet timestamptz (Zeitstempel mit Zeitzone) für verbesserte Genauigkeit und Konsistenz.
  • Entfernt redundante address- und original_address-Spalten und vereinfacht so die Tabellenstruktur. Es ist nur previous_address notwendig.

Das obige ist der detaillierte Inhalt vonWie kann ich die automatische Nummerierung für zusammengesetzte Schlüssel in PostgreSQL effizient implementieren?. 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