Mícháte dva aspekty:
- typ dat umožňující určité hodnoty pro váš sloupec PK
- formát které jste vybrali pro zobrazení
AUTO_INCREMENT
je nestandardní koncept MySQL, SQL Server používá IDENTITY(1,1)
, atd.
Použijte serial
sloupec v Postgres:
CREATE TABLE users (
user_id serial PRIMARY KEY
, ...
)
To je pseudotyp implementovaný jako integer
datový typ s výchozím výkresem sloupce z připojeného SEQUENCE
. integer
je snadno dostatečně velký pro vaše pouzdro (-2147483648 až +2147483647).
Pokud opravdu potřebujete vynutit čísla s maximálně 8 desetinnými číslicemi, přidejte CHECK
omezení
:
CONSTRAINT id_max_8_digits CHECK (user_id BETWEEN 0 AND < 99999999)
Chcete-li zobrazit číslo jakýmkoli způsobem, který si přejete - 0-vyplněno na 8 číslic, pro váš případ použijte to_char()
:
SELECT to_char(user_id, '00000000') AS user_id_8digit
FROM users;
To je velmi rychlé. Všimněte si, že výstup je text
nyní, nikoli integer
.
SQL Fiddle.
Několik dalších věcí je ve vašem kódu specifické pro MySQL: