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: