Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Pemicu Oracle untuk membuat nomor otomatis

Sesuatu seperti ini akan bekerja pada 11g

CREATE SEQUENCE t1_id_seq 
  start with 10000 
  increment by 1;

CREATE TRIGGER trigger_name
  BEFORE INSERT ON t1
  FOR EACH ROW
DECLARE
BEGIN
  IF( :new.id IS NULL )
  THEN
    :new.id := t1_id_seq.nextval;
  END IF;
END;

Jika Anda menggunakan versi sebelumnya, Anda harus melakukan SELECT INTO untuk mendapatkan nilai berikutnya dari urutan

CREATE TRIGGER trigger_name
  BEFORE INSERT ON t1
  FOR EACH ROW
DECLARE
BEGIN
  IF( :new.id IS NULL )
  THEN
    SELECT t1_id_seq.nextval
      INTO :new.id
      FROM dual;
  END IF;
END;

Ketahuilah bahwa urutan Oracle tidak bebas celah. Jadi sangat mungkin bahwa nilai-nilai tertentu akan dilewati karena berbagai alasan. Sisipan pertama Anda mungkin memiliki ID 10000 dan yang kedua mungkin memiliki ID 10020 jika dilakukan beberapa menit, jam, atau hari kemudian.

Selain itu, ketahuilah bahwa Oracle tidak mendukung penetapan beberapa baris dalam klausa VALUES seperti yang dilakukan MySQL. Jadi daripada

insert into t1 (firstname, lastname) values ('Michael','Jordan'),('Larry','Bird')

Anda memerlukan dua pernyataan INSERT terpisah

insert into t1 (firstname, lastname) values ('Michael','Jordan');
insert into t1 (firstname, lastname) values ('Larry','Bird');


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Konektor Microsoft SSIS untuk Oracle oleh Attunity untuk VS2015 Tidak Ditampilkan

  2. Bagaimana cara mengekspor data bidang gumpalan di pengembang Oracle sql

  3. Hasilkan file XML dengan tag XML yang Disesuaikan dari tabel database Oracle

  4. Mentransposisi dan menggabungkan data kolom Oracle

  5. Penyedia OraOLEDB.Oracle tidak terdaftar di mesin lokal