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-kode tilbage> 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.