PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie lässt sich der Primärschlüssel in PostgreSQL mit X Ziffern versehen?

Sie vermischen zwei Aspekte:

  • der Datentyp bestimmte Werte zulassen für Ihre PK-Spalte
  • das Format Sie zur Anzeige ausgewählt haben

AUTO_INCREMENT ein nicht standardmäßiges Konzept von MySQL ist, verwendet SQL Server IDENTITY(1,1) usw.
Verwenden Sie einen serial Spalte in Postgres:

CREATE TABLE users (
  user_id serial PRIMARY KEY
, ...
)

Das ist ein Pseudotyp, der als integer implementiert ist Datentyp mit einer Spaltenstandardzeichnung aus einer angehängten SEQUENCE . integer ist locker groß genug für Ihren Fall (-2147483648 bis +2147483647).

Wenn Sie wirklich Zahlen mit maximal 8 Dezimalstellen erzwingen müssen, fügen Sie ein CHECK Einschränkung :

CONSTRAINT id_max_8_digits CHECK (user_id BETWEEN 0 AND < 99999999)

Um die Nummer in beliebiger Weise anzuzeigen - mit 0 aufgefüllt zu 8 Ziffern, verwenden Sie für Ihren Fall to_char() :

SELECT to_char(user_id, '00000000') AS user_id_8digit
FROM   users;

Das ist sehr schnell. Beachten Sie, dass die Ausgabe text ist jetzt, nicht integer .
SQL-Fiddle.

Ein paar andere Dinge in Ihrem Code sind MySQL-spezifisch:

  • int(8) :Verwenden Sie int .
  • datetime :Verwenden Sie timestamp .
  • TYPE=INNODB :lass das einfach.