PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment convertir une clé primaire d'entier en série ?

serial est un pseudo type de données, pas un type de données réel. C'est un integer en dessous avec quelques commandes DDL supplémentaires exécutées automatiquement :

  1. Créer une séquence (avec le nom correspondant par défaut).
  2. Définir la colonne NOT NULL et la valeur par défaut pour dessiner à partir de cette séquence.
  3. Faites en sorte que la colonne "s'approprie" la séquence.

Détails :

  • Renommer en toute sécurité et proprement les tables qui utilisent des colonnes de clé primaire série dans Postgres ?

Un bigserial est le même, construit autour d'un bigint colonne. Vous voulez bigint , mais vous y êtes déjà parvenu. Pour transformer un serial existant colonne dans un bigserial (ou smallserial ), tout ce que vous avez à faire est de ALTER le type de données de la colonne. Les séquences sont généralement basées sur bigint , donc la même séquence peut être utilisée pour n'importe quel integer saisir.

Pour "changer" un bigint dans un bigserial ou un integer dans un serial , vous n'avez plus qu'à faire le reste à la main :

  • Création d'une séquence PostgreSQL vers un champ (qui n'est pas l'ID de l'enregistrement)

Le type de données réel est toujours integer / bigint . Certains clients comme pgAdmin afficheront le type de données serial dans le reverse engineering CREATE TABLE script, si tous les critères pour un serial sont remplies.