PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como fazer a chave primária ter X dígitos no PostgreSQL?


Você está misturando dois aspectos:
  • o tipo de dados permitindo certos valores para sua coluna PK
  • o formato você escolheu para exibição

AUTO_INCREMENT é um conceito não padrão do MySQL, o SQL Server usa IDENTITY(1,1) , etc.
Use um série coluna no Postgres:
CREATE TABLE users (
  user_id serial PRIMARY KEY
, ...
)

Esse é um pseudo-tipo implementado como integer tipo de dados com um desenho padrão de coluna de uma SEQUENCE . inteiro é grande o suficiente para o seu caso (-2147483648 a +2147483647).

Se você realmente precisar impor números com no máximo 8 dígitos decimais, adicione um VERIFICAR restrição :
CONSTRAINT id_max_8_digits CHECK (user_id BETWEEN 0 AND < 99999999)

Para exibir o número da forma que desejar - com 0 a 8 dígitos, para o seu caso, use to_char() :
SELECT to_char(user_id, '00000000') AS user_id_8digit
FROM   users;

Isso é muito rápido. Observe que a saída é text agora, não inteiro .
SQL Fiddle.

Algumas outras coisas são específicas do MySQL em seu código:
  • int(8) :use int .
  • datahora :use timestamp .
  • TYPE=INNODB :apenas largue isso.