Rumah > pangkalan data > Oracle > Analisis urutan Oracle SEQUENCE

Analisis urutan Oracle SEQUENCE

WBOY
Lepaskan: 2022-07-28 15:49:58
ke hadapan
2329 orang telah melayarinya

Artikel ini membawa anda pengetahuan yang berkaitan tentang Oracle, dan menerangkan urutan dalam Oracle secara terperinci Artikel memperkenalkannya secara terperinci melalui kod sampel. Ia mempunyai nilai rujukan tertentu untuk kajian atau kerja semua orang, dan saya harap ia akan membantu semua orang.

Analisis urutan Oracle SEQUENCE

Tutorial yang disyorkan: "Tutorial Video Oracle"

1 Pengenalan Urutan

Jujukan Oracle ialah A objek pangkalan data yang fungsi utamanya adalah untuk menjana nilai unik. Selepas jujukan dibuat, objek jujukan boleh ditemui melalui kamus data, jadi jujukan boleh dikongsi oleh berbilang objek.

2. Cipta jujukan

Jurutan dibuat menggunakan sintaks CREATE SEQUENCE:

CREATE SEQUENCE sequence 
[INCREMENT BY n]
 [START WITH n]
 [{MAXVALUE n | NOMAXVALUE}]
 [{MINVALUE n | NOMINVALUE}]
 [{CYCLE | NOCYCLE}]
 [{CACHE n | NOCACHE}];
Salin selepas log masuk
  • NCREMENT BY: digunakan untuk menentukan saiz langkah bagi jujukan, jika diabaikan, Lalai ialah 1. Jika nilai negatif, ini bermakna nilai jujukan semakin berkurangan.
  • MULAKAN DENGAN: Mentakrifkan nilai awal jujukan (iaitu nilai pertama yang dijana), lalainya ialah 1.
  • MAXVALUE: Mentakrifkan nilai maksimum yang boleh dijana oleh jujukan. NOMAXVALUE ialah pilihan lalai, yang bermaksud tiada nilai maksimum Pada masa ini, untuk jujukan yang meningkat, nilai maksimum yang boleh dihasilkan oleh sistem ialah 10 hingga kuasa ke-27, nilai maksimum ialah -1.
  • MINVALUE: Mentakrifkan nilai minimum yang boleh dijana oleh jujukan. NOMINVALUE ialah pilihan lalai, yang bermaksud tiada nilai minimum Pada masa ini, untuk jujukan menurun, nilai minimum yang boleh dihasilkan oleh sistem ialah negatif 10 hingga kuasa ke-26, nilai minimum ialah 1.
  • CYCLE dan NOCYCLE: Nyatakan sama ada untuk menggelung apabila nilai penjana jujukan mencapai had. Jika gelung, apabila jujukan meningkat mencapai nilai maksimum, ia gelung ke nilai minimum untuk jujukan menurun, apabila ia mencapai nilai minimum, ia gelung ke nilai maksimum. Jika anda tidak gelung, selepas mencapai nilai had, ralat akan berlaku jika anda terus menjana nilai baharu.
  • CACHE: Mentakrifkan saiz blok memori untuk menyimpan jujukan, lalainya ialah 20. NOCACHE bermaksud tiada penimbalan memori bagi jujukan. Penimbalan memori jujukan boleh meningkatkan prestasi jujukan.

Contohnya:

CREATE SEQUENCE invoice_seq
INCREMENT BY 1
START WITH 1
MAXVALUE 9999999
NOCYCLE NOCACHE;
Salin selepas log masuk

3 Urutan pertanyaan

Setelah jujukan dibuat, kod penciptaan jujukan ditekskan dalam kamus data dan boleh dijadikan ditemui dalam Seperti yang dilihat dalam kamus data objek_pengguna, seperti:

SELECT object_name,object_id,object_type  FROM user_objects WHERE object_name = 'INVOICE_SEQ';
Salin selepas log masuk

Butiran jujukan disimpan dalam jadual jujukan pengguna:

SELECT sequence_name, min_value, max_value, increment_by, last_number  FROM user_sequences;
Salin selepas log masuk

4. Gunakan jujukan

NEXTVAL dan lajur Pseudo CURRVAL

  • NEXTVAL: Mengembalikan nilai jujukan yang tersedia seterusnya setiap kali, walaupun untuk pengguna yang berbeza. Apabila menggunakan sequence.NEXTVAL, nombor jujukan baharu dijana dan nombor jujukan semasa dimasukkan ke dalam CURRVAL.
  • CURRVAL: Dapatkan nilai jujukan semasa. Jika anda menggunakan CURRVAL sebelum menggunakan NEXTVAL buat kali pertama, ralat akan dilaporkan.

digunakan seperti berikut:

SELECT invoice_seq.CURRVAL,invoice_seq.NEXTVAL FROM DUAL;

INSERT INTO invoice  (invoice_id, vendor_id, invoice_number, invoice_total  )
      VALUES (invoice_seq.NEXTVAL, 10, 'INV' || invoice_seq.CURRVAL, 100  );
Salin selepas log masuk

NEXTVAL dan CURRVAL boleh digunakan dalam konteks berikut:

  • ialah bukan subkueri Senarai medan yang merupakan sebahagian daripada pernyataan SELECT.
  • Senarai PILIH subquery dalam pernyataan INSERT.
  • Klausa NILAI dalam pernyataan INSERT.
  • Klausa SET dalam kenyataan UPDATE.

NEXTVAL dan CURRVAL tidak boleh digunakan dalam konteks berikut:

  • PILIH senarai paparan.
  • PILIH pernyataan dengan DISTINCT.
  • PILIH pernyataan dengan klausa GROUP BY, HAVING atau ORDER BY. Klausa
  • dalam pernyataan SELECT, DELETE atau UPDATE.
  • Ungkapan lalai dalam kenyataan CREATE TABLE atau ALTER TABLE.

Juga ambil perhatian bahawa ROLLBACK tidak melancarkan kembali nilai jujukan.

5. Ubah suai urutan

Contohnya:

ALTER SEQUENCE invoice_seq     INCREMENT BY 2 MAXVALUE 10   NOCACHE  NOCYCLE;
Salin selepas log masuk

Apabila mengubah suai jujukan, terdapat sekatan berikut:

  • Ini jujukan tidak boleh digunakan nilai permulaan.
  • Nilai minimum tidak boleh lebih besar daripada nilai semasa.
  • Nilai maksimum tidak boleh kurang daripada nilai semasa.
  • Peraturan jujukan yang diubah suai tidak akan menjejaskan nilai jujukan sebelumnya, hanya nilai jujukan akan datang akan terjejas.
  • Pengguna mesti mempunyai kebenaran ALTER SEQUENCE.

6. Padamkan jujukan

DROP SEQUENCE invoice_seq;
Salin selepas log masuk

7. Buat jujukan auto-meningkat

1 Buat jujukan

create sequence sq_recid 
minvalue 1 maxvalue 999999  increment by 1   start with 1 noCYCLE;
Salin selepas log masuk

2 . Buat pencetus

create or replace trigger  trg_test
  before  insert on test for each row
begin
  select sq_recid.nextval into :new.ID from dual;
end;

alter  trigger trg_test  enable;
Salin selepas log masuk

3. Dalam C#, anda juga boleh memasukkan urutan secara manual ke dalam jadual

string sql="insert into test(ID,otherCol)value (Sql_recid.nextval,***)
    retuing ID into :ID"
Salin selepas log masuk

Tutorial yang disyorkan: "Tutorial Video Oracle"

Atas ialah kandungan terperinci Analisis urutan Oracle SEQUENCE. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:jb51.net
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan