sql >> Database >  >> RDS >> PostgreSQL

PostgreSQL - volgende seriële waarde in een tabel

Als u een ID wilt claimen en deze wilt retourneren, kunt u volgendeval() , waarmee de reeks vooruitgaat zonder gegevens in te voegen.

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.



  1. Hoe voer ik meerdere CASE WHEN-voorwaarden uit met SQL Server 2008?

  2. Wat is de beste manier in MySQL om te zien hoeveel uur oud iets is?

  3. SQL, lege cellen afhandelen

  4. MySQL:datumbereik uitbreiden naar nieuwe rijen