sql >> Database teknologi >  >> RDS >> PostgreSQL

PostgreSQL - næste seriel værdi i en tabel

Hvis du vil kræve et ID og returnere det, kan du bruge code>nextval() , som fremfører sekvensen uden at indsætte data.

Bemærk, at hvis dette er en SERIAL kolonne, skal du finde sekvensens navn baseret på tabellen og kolonnenavnet, som følger:

Select nextval(pg_get_serial_sequence('my_table', 'id')) as new_id;

Der er ingen støbejernsgaranti for, at du vil se disse ID'er komme tilbage i rækkefølge (sekvensen genererer dem i rækkefølge, men flere sessioner kan gøre krav på et ID og ikke bruge det endnu, eller rulle en INSERT og ID'et vil ikke blive genbrugt), men der er en garanti for, at de vil være unikke, hvilket normalt er det vigtige.

Hvis du gør dette ofte uden faktisk at bruge ID'et, vil du til sidst opbruge alle de mulige værdier af et 32-bit heltal kolonne (dvs. nå det maksimale repræsentative heltal), men hvis du kun bruger det, når der er en stor chance for, at du faktisk vil indsætte en række med det ID, burde det være OK.



  1. Skift Oracle-port fra port 8080

  2. Postgresql lagret procedure returnerer tabel alle kolonner

  3. Lagring af data i MySQL som JSON

  4. Hvordan vælger man tilfældige rækker fra tabellen med et nøjagtigt antal rækker?