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 NULLen 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.