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.
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}];
- 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;
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';
Butiran jujukan disimpan dalam jadual jujukan pengguna:
SELECT sequence_name, min_value, max_value, increment_by, last_number FROM user_sequences;
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 );
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;
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;
7. Buat jujukan auto-meningkat
1 Buat jujukan
create sequence sq_recid
minvalue 1 maxvalue 999999 increment by 1 start with 1 noCYCLE;
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;
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"
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!