PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Saya tidak mengerti cara kerja nextval() postgresql, dapatkah seseorang menjelaskan?

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.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pembaruan Array JSONB untuk Elemen Tertentu

  2. Kolom dinamis dalam pernyataan SELECT postgres

  3. Baris perintah PostgreSQL psql menampilkan kolom byte

  4. SQL:Mengontrol berapa banyak catatan yang dikembalikan

  5. Postgresql:Tidak dapat mengakses file « $libdir/postgis-2.1 » tidak ada file atau direktori seperti itu