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: