IDを申請して返却する場合は、<を使用できます。 code> nextval() 、データを挿入せずにシーケンスを進めます。
これがSERIAL
の場合は注意してください 列の場合、次のように、テーブルと列の名前に基づいてシーケンスの名前を見つける必要があります。
Select nextval(pg_get_serial_sequence('my_table', 'id')) as new_id;
これらのIDが順番に戻ってくるという鋳鉄の保証はありません(シーケンスはそれらを順番に生成しますが、複数のセッションがIDを要求してまだ使用していないか、 INSERT
> IDは再利用されません)が、一意であることが保証されています。これは通常、重要なことです。
実際にIDを使用せずにこれを頻繁に行うと、最終的には32ビットの integer
の可能なすべての値を使い果たしてしまいます。 列(つまり、表現可能な最大の整数に達する)ですが、そのIDの行を実際に挿入する可能性が高い場合にのみ使用する場合は、問題ありません。