serial
is een pseudo gegevenstype, niet een echt gegevenstype. Het is een integer
onderaan met enkele extra DDL-commando's die automatisch worden uitgevoerd:
- Maak een reeks (met standaard overeenkomende naam).
- Stel de kolom in
NOT NULL
en de standaard om uit die reeks te tekenen. - Maak de kolom "eigenaar" van de reeks.
Details:
- Tabellen die seriële primaire-sleutelkolommen gebruiken in Postgres veilig en netjes hernoemen?
Een bigserial
is hetzelfde, gebouwd rond een bigint
kolom. U wilt bigint
, maar dat heb je al bereikt. Een bestaand serial
transformeren kolom in een bigserial
(of smallserial
), het enige wat u hoeft te doen is ALTER
het gegevenstype van de kolom. Sequenties zijn over het algemeen gebaseerd op bigint
, dus dezelfde reeks kan worden gebruikt voor elk integer
typ.
Een bigint
"veranderen" in een bigserial
of een integer
in een serial
, je moet de rest gewoon met de hand doen:
- Een PostgreSQL-reeks maken naar een veld (dat niet de ID van de record is)
Het werkelijke gegevenstype is nog steeds integer
/ bigint
. Sommige clients, zoals pgAdmin, tonen het gegevenstype serial
in de reverse-engineered CREATE TABLE
script, als alle criteria voor een serial
zijn voldaan.