Jika Anda ingin mengklaim ID dan mengembalikannya, Anda dapat menggunakan nextval()
, yang memajukan urutan tanpa memasukkan data apa pun.
Perhatikan bahwa jika ini adalah SERIAL
kolom, Anda perlu menemukan nama urutan berdasarkan tabel dan nama kolom, sebagai berikut:
Select nextval(pg_get_serial_sequence('my_table', 'id')) as new_id;
Tidak ada jaminan kuat bahwa Anda akan melihat ID ini kembali secara berurutan (urutan menghasilkannya secara berurutan, tetapi beberapa sesi dapat mengklaim ID dan belum menggunakannya, atau memutar kembali INSERT
dan ID tidak akan digunakan kembali) tetapi ada jaminan bahwa ID tersebut akan unik, yang biasanya merupakan hal yang penting.
Jika Anda sering melakukan ini tanpa benar-benar menggunakan ID, pada akhirnya Anda akan menggunakan semua nilai yang mungkin dari integer
32-bit kolom (yaitu mencapai bilangan bulat maksimum yang dapat diwakili), tetapi jika Anda menggunakannya hanya ketika ada kemungkinan besar Anda benar-benar akan memasukkan baris dengan ID itu, itu tidak masalah.