Wenn Sie eine ID beanspruchen und zurückgeben möchten, können Sie
Beachten Sie, dass dies ein SERIAL
ist -Spalte müssen Sie den Namen der Sequenz basierend auf dem Tabellen- und Spaltennamen wie folgt ermitteln:
Select nextval(pg_get_serial_sequence('my_table', 'id')) as new_id;
Es gibt keine hundertprozentige Garantie dafür, dass diese IDs in der richtigen Reihenfolge zurückkommen (die Sequenz generiert sie der Reihe nach, aber mehrere Sitzungen können eine ID beanspruchen und sie noch nicht verwenden oder einen INSERT
und die ID wird nicht wiederverwendet), aber es gibt eine Garantie, dass sie eindeutig sind, was normalerweise das Wichtigste ist.
Wenn Sie dies häufig tun, ohne die ID tatsächlich zu verwenden, werden Sie schließlich alle möglichen Werte einer 32-Bit-Ganzzahl
aufbrauchen Spalte (d. h. die maximal darstellbare Ganzzahl erreichen), aber wenn Sie es nur verwenden, wenn eine hohe Wahrscheinlichkeit besteht, dass Sie tatsächlich eine Zeile mit dieser ID einfügen, sollte es in Ordnung sein.