sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Cómo hacer que la clave principal tenga X dígitos en PostgreSQL?

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:

  • int(8) :use int .
  • datetime :use timestamp .
  • TYPE=INNODB :solo deja eso.