Als u een ID wilt claimen en deze wilt retourneren, kunt u
Merk op dat als dit een SERIAL
. is kolom, moet u de naam van de reeks als volgt vinden op basis van de tabel- en kolomnaam:
Select nextval(pg_get_serial_sequence('my_table', 'id')) as new_id;
Er is geen ijzersterke garantie dat je deze ID's in volgorde terug zult zien komen (de volgorde genereert ze in volgorde, maar meerdere sessies kunnen een ID claimen en deze nog niet gebruiken, of een INSERT
en de ID zal niet opnieuw worden gebruikt), maar er is een garantie dat ze uniek zullen zijn, wat normaal gesproken het belangrijkste is.
Als u dit vaak doet zonder de ID daadwerkelijk te gebruiken, verbruikt u uiteindelijk alle mogelijke waarden van een 32-bits integer
kolom (d.w.z. het maximaal representeerbare gehele getal bereiken), maar als u het alleen gebruikt als er een grote kans is dat u daadwerkelijk een rij met die ID invoegt, zou het in orde moeten zijn.