NEXTVAL
adalah fungsi untuk mendapatkan nilai berikutnya dari suatu urutan.
Urutan adalah objek yang mengembalikan angka yang terus meningkat, berbeda untuk setiap panggilan, terlepas dari transaksi, dll.
Setiap kali Anda menelepon NEXTVAL
, Anda mendapatkan nomor yang berbeda.
Ini terutama digunakan untuk menghasilkan kunci primer pengganti untuk tabel Anda.
Anda dapat membuat tabel seperti ini:
CREATE SEQUENCE mysequence;
CREATE TABLE mytable (id BIGINT NOT NULL PRIMARY KEY, value INT);
dan masukkan nilai seperti ini:
INSERT
INTO mytable (id, value)
VALUES
(NEXTVAL('mysequence'), 1),
(NEXTVAL('mysequence'), 2);
dan lihat apa yang Anda dapatkan:
SELECT * FROM mytable;
id | value
----+-------
1 | 1
2 | 2
PostgreSQL menawarkan gula sintaks yang bagus untuk ini:
CREATE TABLE mytable (id BIGSERIAL PRIMARY KEY, value INT);
yang setara dengan
CREATE SEQUENCE mytable_id_seq; -- table_column_'seq'
CREATE TABLE mytable (id BIGINT NOT NULL PRIMARY KEY DEFAULT NEXTVAL('mytable_id_seq'), value INT); -- it's not null and has a default value automatically
dan dapat digunakan seperti ini:
INSERT
INTO mytable (value)
VALUES (1),
(2); -- you can omit id, it will get filled for you.
Perhatikan bahwa meskipun Anda mengembalikan pernyataan penyisipan atau menjalankan pernyataan bersamaan dari dua sesi yang berbeda, nilai urutan yang dikembalikan tidak akan pernah sama dan tidak akan pernah digunakan kembali (baca cetakan kecil di dokumen meskipun di bawah CYCLE
).
Jadi Anda bisa yakin semua nilai kunci utama Anda akan dibuat unik di dalam tabel.