PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come fare in modo che la chiave primaria abbia X cifre in PostgreSQL?

Stai mescolando due aspetti:

  • il tipo di dati consentendo determinati valori per la tua colonna PK
  • il formato hai scelto per la visualizzazione

AUTO_INCREMENT è un concetto non standard di MySQL, SQL Server utilizza IDENTITY(1,1) , ecc.
Utilizza un serial colonna in Postgres:

CREATE TABLE users (
  user_id serial PRIMARY KEY
, ...
)

Questo è uno pseudo-tipo implementato come integer tipo di dati con una colonna predefinita che attinge da un SEQUENCE . integer è abbastanza grande per il tuo caso (da -2147483648 a +2147483647).

Se hai davvero bisogno di imporre numeri con un massimo di 8 cifre decimali, aggiungi un CHECK vincolo :

CONSTRAINT id_max_8_digits CHECK (user_id BETWEEN 0 AND < 99999999)

Per visualizzare il numero in qualsiasi modo desideri:0 con 8 cifre, per il tuo caso, usa to_char() :

SELECT to_char(user_id, '00000000') AS user_id_8digit
FROM   users;

È molto veloce. Nota che l'output è text ora, non integer .
SQL Fiddle.

Un paio di altre cose sono specifiche per MySQL nel tuo codice:

  • int(8) :usa int .
  • datetime :usa timestamp .
  • TYPE=INNODB :lascialo perdere.