PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да накарам първичния ключ да има X цифри в PostgreSQL?

Вие смесвате два аспекта:

  • типа данни разрешаване на определени стойности за вашата колона PK
  • формата сте избрали за показване

AUTO_INCREMENT е нестандартна концепция на MySQL, SQL Server използва IDENTITY(1,1) и т.н.
Използвайте сериен колона в Postgres:

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

Това е псевдотип, реализиран като integer тип данни с чертеж по подразбиране на колона от прикачен SEQUENCE . цяло число лесно е достатъчно голям за вашия случай (-2147483648 до +2147483647).

Ако наистина трябва да наложите числа с максимум 8 десетични цифри, добавете ПРОВЕРКА ограничение :

CONSTRAINT id_max_8_digits CHECK (user_id BETWEEN 0 AND < 99999999)

За да покажете номера по желания от вас начин - 0-подплатени до 8 цифри, за вашия случай използвайте to_char() :

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

Това е много бързо. Имайте предвид, че изходът е текст сега, не integer .
SQL Fiddle.

Няколко други неща са специфични за MySQL във вашия код:

  • int(8) :използвайте int .
  • дата и час :използвайте timestamp .
  • TYPE=INNODB :просто зарежете това.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Проблем при конструирането на клауза where за включване на стойности null/0

  2. Присъединете се към 2 комплекта въз основа на реда по подразбиране

  3. PL/pgSQL за динамична заявка "всичко в едно".

  4. Не може да се извика JNDI ресурс във файла persistence.xml

  5. PostgreSQL:синтаксис на ляво външно присъединяване