Maison >base de données >tutoriel mysql >Comment implémenter correctement les clés primaires à incrémentation automatique dans PostgreSQL ?

Comment implémenter correctement les clés primaires à incrémentation automatique dans PostgreSQL ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-22 11:41:10703parcourir

How Do I Properly Implement Auto-Incrementing Primary Keys in PostgreSQL?

Dépannage des colonnes d'incrémentation automatique PostgreSQL

Vous pouvez rencontrer des erreurs lorsque vous essayez d'utiliser AUTO_INCREMENT pour numéroter automatiquement les clés primaires dans PostgreSQL. Examinons les causes possibles et leurs solutions :

PostgreSQL 10 et supérieur

Dans PostgreSQL 10 et supérieur, il est recommandé d'utiliser la colonne IDENTITY du SQL standard au lieu de AUTO_INCREMENT.

Créer un tableau avec la colonne IDENTITÉ

<code class="language-sql">CREATE TABLE staff (  
 staff_id int GENERATED ALWAYS AS IDENTITY PRIMARY KEY  
, staff text NOT NULL  
);</code>

Ajouter la colonne IDENTITY à la table existante

<code class="language-sql">ALTER TABLE staff ADD COLUMN staff_id int GENERATED ALWAYS AS IDENTITY;</code>

Faites-en également la clé primaire :

<code class="language-sql">ALTER TABLE staff ADD COLUMN staff_id int GENERATED ALWAYS AS IDENTITY PRIMARY KEY;</code>

PostgreSQL 9.6 ou version antérieure

Pour 9.6 ou version antérieure, utilisez le type de pseudo-données série :

<code class="language-sql">CREATE TABLE staff (  
 staff_id serial PRIMARY KEY  
, staff text NOT NULL  
);</code>

Notes supplémentaires

Veuillez vous assurer d'utiliser des identifiants valides (minuscules, sans guillemets) pour éviter des problèmes potentiels.

Si vous souhaitez remplacer les colonnes série par des colonnes IDENTITÉ, veuillez vous référer à ce document pour obtenir des conseils.

Vous pouvez utiliser OVERRIDING {SYSTEM|USER} VALUE pour remplacer les valeurs du système ou les entrées de l'utilisateur dans les commandes INSERT.

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!

Déclaration:
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