PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment faire en sorte que la clé primaire ait X chiffres dans PostgreSQL ?

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 :

  • int(8) :utilisez int .
  • datetime  :utilisez timestamp .
  • TYPE=INNODB  :laissez tomber.