

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Fungsi manipulasi urutan
<a name="sequence-functions-syntax-support"></a>

Bagian ini menjelaskan fungsi untuk beroperasi pada objek urutan, juga disebut generator urutan atau hanya urutan. Objek urutan adalah tabel baris tunggal khusus yang dibuat dengan[`CREATE SEQUENCE`](create-sequence-syntax-support.md). Objek urutan biasanya digunakan untuk menghasilkan pengidentifikasi unik untuk baris tabel. Fungsi urutan menyediakan metode sederhana yang aman untuk multipengguna untuk mendapatkan nilai urutan berturut-turut dari objek urutan.

**penting**  
Saat menggunakan urutan, nilai cache harus dipertimbangkan dengan cermat. Untuk informasi selengkapnya, lihat info penting di [`CREATE SEQUENCE`](create-sequence-syntax-support.md) halaman.  
Untuk panduan tentang cara terbaik menggunakan urutan berdasarkan pola beban kerja, lihat. [Bekerja dengan urutan dan kolom identitas](sequences-identity-columns-working-with.md)


| Fungsi | Deskripsi | 
| --- | --- | 
| nextval ( regclass ) → bigint | Memajukan objek urutan ke nilai berikutnya dan mengembalikan nilai itu. Ini dilakukan secara atom: bahkan jika beberapa sesi berjalan secara nextval bersamaan, masing-masing akan dengan aman menerima nilai urutan yang berbeda. Jika objek urutan telah dibuat dengan parameter default, nextval panggilan berturut-turut akan mengembalikan nilai yang meningkat dimulai dengan 1. Perilaku lain dapat diperoleh dengan menggunakan parameter yang sesuai dalam [`CREATE SEQUENCE`](create-sequence-syntax-support.md) perintah. Fungsi ini membutuhkan USAGE atau UPDATE hak istimewa pada urutan. | 
| setval ( regclass, bigint [, boolean ] ) → bigint | Menetapkan nilai objek urutan saat ini, dan opsional is\$1called benderanya. Bentuk dua parameter menetapkan last\$1value bidang urutan ke nilai yang ditentukan dan menetapkan is\$1called bidangnyatrue, yang berarti bahwa yang berikutnya nextval akan memajukan urutan sebelum mengembalikan nilai. Nilai yang akan dilaporkan oleh juga currval diatur ke nilai yang ditentukan. Dalam bentuk tiga parameter, is\$1called dapat diatur ke salah satu true ataufalse. truememiliki efek yang sama dengan bentuk dua parameter. Jika diatur kefalse, berikutnya nextval akan mengembalikan persis nilai yang ditentukan, dan kemajuan urutan dimulai dengan yang berikut ini. nextval Selain itu, nilai yang dilaporkan oleh currval tidak diubah di sini. Contoh: <pre>SELECT setval('myseq', 42);           -- Next nextval will return 43<br />SELECT setval('myseq', 42, true);     -- Same as above<br />SELECT setval('myseq', 42, false);    -- Next nextval will return 42</pre> Hasil yang dikembalikan oleh setval hanyalah nilai dari argumen keduanya. Fungsi ini membutuhkan UPDATE hak istimewa pada urutan. | 
| currval ( regclass ) → bigint | Mengembalikan nilai yang paling baru diperoleh nextval untuk urutan ini dalam sesi saat ini. (Kesalahan dilaporkan jika tidak nextval pernah dipanggil untuk urutan ini dalam sesi ini.) Karena ini mengembalikan nilai session-local, ini memberikan jawaban yang dapat diprediksi apakah sesi lain telah berjalan atau tidak nextval karena sesi saat ini melakukannya. Fungsi ini membutuhkan USAGE atau SELECT hak istimewa pada urutan. | 
| lastval () → bigint | Mengembalikan nilai yang terakhir dikembalikan oleh nextval dalam transaksi saat ini. Fungsi ini identik dengancurrval, kecuali bahwa alih-alih mengambil nama urutan sebagai argumen, ini mengacu pada urutan nextval mana pun yang paling baru diterapkan dalam transaksi saat ini. Ini adalah kesalahan untuk menelepon lastval jika nextval belum dipanggil dalam transaksi saat ini. Fungsi ini membutuhkan USAGE atau SELECT hak istimewa pada urutan yang terakhir digunakan. | 

**Awas**  
Nilai yang diperoleh `nextval` tidak direklamasi untuk digunakan kembali jika transaksi pemanggilan kemudian dibatalkan. Ini berarti bahwa transaksi dibatalkan atau kerusakan database dapat mengakibatkan kesenjangan dalam urutan nilai yang ditetapkan. Itu bisa terjadi tanpa membatalkan transaksi juga. Misalnya, `ON CONFLICT` klausa `INSERT` with an akan menghitung to-be-inserted tuple, termasuk melakukan `nextval` panggilan yang diperlukan, sebelum mendeteksi konflik apa pun yang akan menyebabkannya mengikuti aturan sebagai gantinya. `ON CONFLICT` Dengan demikian, objek urutan Aurora DSQL *tidak dapat digunakan untuk mendapatkan urutan “*tanpa celah”.  
Demikian juga, perubahan status urutan `setval` yang dibuat oleh segera terlihat oleh transaksi lain, dan tidak dibatalkan jika transaksi panggilan kembali.

Urutan yang akan dioperasikan oleh fungsi urutan ditentukan oleh `regclass` argumen, yang hanyalah OID dari urutan dalam katalog `pg_class` sistem. Namun, Anda tidak perlu mencari OID dengan tangan, karena konverter input tipe `regclass` data akan melakukan pekerjaan untuk Anda. [Lihat dokumentasi PostgreSQL tentang Jenis Pengenal Objek untuk detailnya.](https://www.postgresql.org/docs/current/datatype-oid.html)