Maison > base de données > tutoriel mysql > Comment puis-je implémenter efficacement la numérotation automatique des clés composées dans PostgreSQL ?

Comment puis-je implémenter efficacement la numérotation automatique des clés composées dans PostgreSQL ?

Patricia Arquette
Libérer: 2025-01-07 19:46:42
original
225 Les gens l'ont consulté

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

Numérotation automatique des clés composées PostgreSQL : une approche simplifiée

Le suivi des changements d'adresse individuels au fil du temps nécessite un identifiant unique pour chaque changement dans l'historique d'une personne. Bien qu'il existe des schémas de numérotation automatique complexes, PostgreSQL offre une solution plus propre et plus efficace utilisant des colonnes série ou IDENTITY.

Éviter la complexité

Les méthodes traditionnelles conduisent souvent à des systèmes de numérotation complexes et sujets aux erreurs. Les fonctionnalités intégrées de PostgreSQL offrent une alternative simplifiée.

La solution recommandée : colonnes série/IDENTITÉ

Tirer parti de la colonne serial ou IDENTITY de PostgreSQL simplifie considérablement le processus. Cela élimine le besoin de gérer des séquences complexes.

Exemple de mise en œuvre

Voici comment implémenter cela dans un address_history tableau :

<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>
Copier après la connexion

Récupération de numéros séquentiels

Pour obtenir le numéro séquentiel de chaque changement d'adresse par personne, utilisez la fonction row_number() fenêtre :

<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>
Copier après la connexion

Cette vue remplace directement la table address_history dans les requêtes, fournissant le numéro séquentiel (adr_nr) pour chaque changement d'adresse.

Améliorations clés

  • Utilise timestamptz (horodatage avec fuseau horaire) pour une précision et une cohérence améliorées.
  • Supprime les colonnes address et original_address redondantes, simplifiant ainsi la structure du tableau. Seul previous_address est nécessaire.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal