Maison > base de données > tutoriel mysql > Pourquoi AUTO_INCREMENT ne fonctionne-t-il pas dans PostgreSQL et comment puis-je obtenir des identifiants à incrémentation automatique ?

Pourquoi AUTO_INCREMENT ne fonctionne-t-il pas dans PostgreSQL et comment puis-je obtenir des identifiants à incrémentation automatique ?

DDD
Libérer: 2025-01-22 11:37:10
original
398 Les gens l'ont consulté

Why Doesn't AUTO_INCREMENT Work in PostgreSQL, and How Can I Achieve Auto-Incrementing IDs?

Dépannage de AUTO_INCREMENT de PostgreSQL

PostgreSQL ne prend pas en charge le mot-clé AUTO_INCREMENT utilisé dans d'autres systèmes de bases de données comme MySQL. Tenter de l'utiliser entraînera une erreur de syntaxe. Ce guide explique comment obtenir des clés primaires à incrémentation automatique dans PostgreSQL.

PostgreSQL 10 et versions ultérieures : utilisation des colonnes IDENTITY

L'approche recommandée pour PostgreSQL 10 et les versions plus récentes consiste à utiliser la colonne IDENTITY. Contrairement aux colonnes SERIAL, les colonnes IDENTITY offrent plus de flexibilité avec les options GENERATED BY DEFAULT et GENERATED ALWAYS.

Créer un tableau avec une colonne IDENTITÉ

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

Ajout d'une colonne IDENTITY à une table existante

<code class="language-sql">ALTER TABLE staff ADD COLUMN staff_id int GENERATED ALWAYS AS IDENTITY;</code>
Copier après la connexion

PostgreSQL 9.6 et versions antérieures : utilisation de SERIAL

Pour les anciennes versions de PostgreSQL (9.6 et inférieures), le pseudo-type SERIAL fournit une fonctionnalité d'auto-incrémentation similaire.

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

SERIAL crée et gère automatiquement une séquence associée, garantissant des valeurs uniques et incrémentielles pour la colonne staff_id.

Contrôle des valeurs insérées

Pour un contrôle précis des valeurs insérées, voire en remplaçant les valeurs par défaut du système ou les valeurs fournies par l'utilisateur, utilisez OVERRIDING {SYSTEM|USER} VALUE dans vos instructions INSERT. Cela offre un contrôle avancé au-delà de la simple incrémentation automatique.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal