SEQUENCE Oracle untuk menghasilkan ID unik
Pelajari cara membuat dan memakai SEQUENCE untuk id yang selalu bertambah pada Oracle.
Oracle tidak punya AUTO_INCREMENT
Berbeda dengan MySQL yang punya AUTO_INCREMENT, Oracle menggunakan objek terpisah bernama SEQUENCE untuk menghasilkan angka yang terus bertambah.
Membuat sequence
CREATE SEQUENCE artikel_seq
START WITH 1
INCREMENT BY 1
NOCACHE
NOCYCLE;
Memakai sequence saat insert
INSERT INTO artikel (id, judul)
VALUES (artikel_seq.NEXTVAL, 'Mengenal Oracle Sequence');
-- Mengambil nilai terakhir yang dipakai pada sesi ini
SELECT artikel_seq.CURRVAL FROM dual;
NEXTVAL menghasilkan angka baru setiap dipanggil, sedangkan CURRVAL membaca nilai terakhir yang sudah diambil pada sesi yang sama.
Otomatiskan lewat trigger atau identity column
Oracle 12c ke atas mendukung GENERATED AS IDENTITY yang menggabungkan sequence dan pengisian otomatis kolom dalam satu definisi.
CREATE TABLE artikel (
id NUMBER GENERATED ALWAYS AS IDENTITY,
judul VARCHAR2(200) NOT NULL,
CONSTRAINT artikel_pk PRIMARY KEY (id)
);
Perhatikan celah nomor
Sequence bisa meninggalkan celah nomor jika transaksi yang mengambil nilai dibatalkan, karena NEXTVAL tidak ikut rollback. Jangan mengandalkan sequence sebagai penghitung baris yang berurutan tanpa celah.
Latihan
Buat tabel baru dengan kolom identity, lalu bandingkan hasilnya dengan pendekatan sequence manual pada tabel artikel di atas.
