Je haalt twee aspecten door elkaar:
- het gegevenstype bepaalde waarden toestaan voor je PK-kolom
- het formaat je hebt gekozen voor weergave
AUTO_INCREMENT
is een niet-standaard concept van MySQL, SQL Server gebruikt IDENTITY(1,1)
, etc.
Gebruik een serial
kolom in Postgres:
CREATE TABLE users (
user_id serial PRIMARY KEY
, ...
)
Dat is een pseudo-type geïmplementeerd als integer
gegevenstype met een standaard kolomtekening van een bijgevoegde SEQUENCE
. integer
is gemakkelijk groot genoeg voor uw koffer (-2147483648 tot +2147483647).
Als u getallen met maximaal 8 decimalen echt moet afdwingen, voegt u een CHECK
beperking
:
CONSTRAINT id_max_8_digits CHECK (user_id BETWEEN 0 AND < 99999999)
Om het nummer op elke gewenste manier weer te geven - 0-opgevuld tot 8 cijfers, gebruik voor jouw geval to_char()
:
SELECT to_char(user_id, '00000000') AS user_id_8digit
FROM users;
Dat is erg snel. Merk op dat de uitvoer text
is nu, niet integer
.
SQL Fiddle.
Een paar andere dingen zijn MySQL-specifiek in je code: