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 :
- Créer une séquence (avec le nom correspondant par défaut).
- Définir la colonne
NOT NULL
et la valeur par défaut pour dessiner à partir de cette séquence. - 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.