Vous mélangez deux aspects :
- le type de données autoriser certaines valeurs pour votre colonne PK
- le format que vous avez choisi pour l'affichage
AUTO_INCREMENT
est un concept non standard de MySQL, SQL Server utilise IDENTITY(1,1)
, etc.
Utilisez un serial
colonne dans Postgres :
CREATE TABLE users (
user_id serial PRIMARY KEY
, ...
)
C'est un pseudo-type implémenté comme integer
type de données avec un dessin par défaut de colonne à partir d'un SEQUENCE
. integer
est facilement assez grand pour votre cas (-2147483648 à +2147483647).
Si vous avez vraiment besoin d'imposer des nombres avec un maximum de 8 chiffres décimaux, ajoutez un CHECK
contrainte
:
CONSTRAINT id_max_8_digits CHECK (user_id BETWEEN 0 AND < 99999999)
Pour afficher le numéro de la manière que vous désirez - 0-rembourré à 8 chiffres, pour votre cas, utilisez to_char()
:
SELECT to_char(user_id, '00000000') AS user_id_8digit
FROM users;
C'est très rapide. Notez que la sortie est text
maintenant, pas integer
.
SQL Fiddle.
Quelques autres éléments sont spécifiques à MySQL dans votre code :