Maison >base de données >tutoriel mysql >Comment implémenter des colonnes à incrémentation automatique dans PostgreSQL ?

Comment implémenter des colonnes à incrémentation automatique dans PostgreSQL ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-22 11:32:09467parcourir

How Do I Implement Auto-Incrementing Columns in PostgreSQL?

Implémentation de colonnes à incrémentation automatique dans PostgreSQL

Une erreur peut survenir lorsque vous essayez d'utiliser AUTO_INCREMENT pour numéroter automatiquement les clés primaires dans PostgreSQL. Le code SQL suivant montre un exemple de tentative de création d'une table à l'aide d'AUTO_INCREMENT :

<code class="language-sql">CREATE TABLE Staff   (
  ID        INTEGER NOT NULL AUTO_INCREMENT,
  Name      VARCHAR(40) NOT NULL,
  PRIMARY KEY (ID)
);</code>

Cependant, une erreur est renvoyée :

<code>ERROR: ERROR: syntax error at or near "AUTO_INCREMENT"
SQL state: 42601
Character: 63</code>

Version PostgreSQL et incrémentation automatique

Cette erreur se produit car AUTO_INCREMENT n'est pas une syntaxe valide pour l'auto-incrémentation dans PostgreSQL. Au lieu de cela, différents mécanismes sont utilisés selon la version de PostgreSQL :

PostgreSQL 10 ou supérieur

Pour PostgreSQL 10 ou version ultérieure, utilisez le type de colonne IDENTITY. La syntaxe est la suivante :

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

PostgreSQL 9.6 ou version antérieure

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

<code class="language-sql">CREATE TABLE staff (
  staff_id serial PRIMARY KEY,
  staff    text NOT NULL
);</code>
Le type de pseudo-données

série crée automatiquement un objet séquence et définit DEFAULT sur la valeur suivante de la séquence.

Autres notes

  • Utilisez des identifiants légaux, en minuscules et sans guillemets pour une utilisation plus facile dans PostgreSQL.
  • Utilisez OVERRIDING {SYSTEM|USER} VALUE si nécessaire 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