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: