sql >> Databáze >  >> RDS >> PostgreSQL

Jak zajistit, aby měl primární klíč X číslic v PostgreSQL?

Mícháte dva aspekty:

  • typ dat umožňující určité hodnoty pro váš sloupec PK
  • formát které jste vybrali pro zobrazení

AUTO_INCREMENT je nestandardní koncept MySQL, SQL Server používá IDENTITY(1,1) , atd.
Použijte serial sloupec v Postgres:

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

To je pseudotyp implementovaný jako integer datový typ s výchozím výkresem sloupce z připojeného SEQUENCE . integer je snadno dostatečně velký pro vaše pouzdro (-2147483648 až +2147483647).

Pokud opravdu potřebujete vynutit čísla s maximálně 8 desetinnými číslicemi, přidejte CHECK omezení :

CONSTRAINT id_max_8_digits CHECK (user_id BETWEEN 0 AND < 99999999)

Chcete-li zobrazit číslo jakýmkoli způsobem, který si přejete - 0-vyplněno na 8 číslic, pro váš případ použijte to_char() :

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

To je velmi rychlé. Všimněte si, že výstup je text nyní, nikoli integer .
SQL Fiddle.

Několik dalších věcí je ve vašem kódu specifické pro MySQL:

  • int(8) :použijte int .
  • datetime :použijte timestamp .
  • TYPE=INNODB :prostě toho nechte.


  1. DBMS OUTPUT PUT nic nevytiskne

  2. Nápověda k funkcím časového pásma

  3. Nejjednodušší způsob testování uložené procedury Oracle

  4. Nastavení Grails 3.1.0 s MySQL