Estás mezclando dos aspectos:
- el tipo de datos permitir ciertos valores para su columna PK
- el formato eligió para mostrar
AUTO_INCREMENT
es un concepto no estándar de MySQL, SQL Server usa IDENTITY(1,1)
, etc.
Utilice un serial
columna en Postgres:
CREATE TABLE users (
user_id serial PRIMARY KEY
, ...
)
Ese es un pseudotipo implementado como integer
tipo de datos con un dibujo predeterminado de columna de un SEQUENCE
. integer
es fácilmente lo suficientemente grande para su caso (-2147483648 a +2147483647).
Si realmente necesita aplicar números con un máximo de 8 dígitos decimales, agregue un CHECK
restricción
:
CONSTRAINT id_max_8_digits CHECK (user_id BETWEEN 0 AND < 99999999)
Para mostrar el número de la forma que desee:0 con relleno de 8 dígitos, para su caso, use to_char()
:
SELECT to_char(user_id, '00000000') AS user_id_8digit
FROM users;
Eso es muy rápido. Tenga en cuenta que la salida es text
ahora, no integer
.
SQL Fiddle.
Un par de otras cosas son específicas de MySQL en su código: