簡単な質問があります。テーブルがあるとします。
id A B
1 Jon Doe
2 Foo Bar
次の id の増分 (この場合は 3 ) を知る方法はありますか? データベースはPostgreSQLです!
Tnxたくさん!
簡単な質問があります。テーブルがあるとします。
id A B
1 Jon Doe
2 Foo Bar
次の id の増分 (この場合は 3 ) を知る方法はありますか? データベースはPostgreSQLです!
Tnxたくさん!
ID を要求してそれを返したい場合はnextval()
、データを挿入せずにシーケンスを進める を使用できます。
これがSERIAL
列の場合は、次のように、テーブルと列の名前に基づいてシーケンスの名前を見つける必要があることに注意してください。
Select nextval(pg_get_serial_sequence('my_table', 'id')) as new_id;
これらの ID が順番に返されるという確固たる保証はありません (シーケンスは ID を順番に生成しますが、複数のセッションが ID を要求してまだ使用していないか、ロールバックしINSERT
て ID が再利用されない可能性があります)。 )しかし、それらが一意であるという保証があります。これは通常重要なことです。
実際に ID を使用せずにこれを頻繁に行うと、最終的に 32 ビットinteger
列の可能なすべての値を使い果たす (つまり、表現可能な最大整数に達する) ことになりますが、それを使用する可能性が高い場合にのみ使用すると、その ID を持つ行を挿入しても問題ありません。