Secvența de comandă crează secvența oracle - limba de interogare sql

Secvență CREATE SEQUENCE Oracle

Secvența CREATE SEQUENCE este un obiect de bază de date care generează numere întregi în conformitate cu regulile stabilite la momentul creării acesteia. Pentru o secvență, puteți specifica atât cifre pozitive, cât și negative. În sistemele de baze de date, secvențele sunt utilizate într-o varietate de scopuri, dar mai ales pentru generarea automată a cheilor primare. Cu toate acestea, secvența nu este legată de cheia primară a mesei, deci într-un sens este de asemenea un obiect de utilizare colectivă. Dacă cheia primară este necesară numai pentru a asigura unicitatea și pentru a nu purta o semnificație specifică, consistența este un instrument excelent.







Secvența este creată de comanda CREATE SEQUENCE.

CREAREA SECVENȚEI

Secvența de comandă crează secvența oracle - limba de interogare sql

Sintaxa comenzii CREATE SEQUENCE

Sintaxa comenzii CREATE SEQUENCE

Cuvinte cheie și parametri principali CREATE SEQUENCE.

  • schema este schema în care este creată secvența. Dacă schema este omisă, Oracle creează o secvență în schema de utilizator.
  • secvență - numele secvenței care urmează a fi creată
  • startwith - permite creatorului secvenței să specifice prima valoare pe care o generează. După crearea, secvența generează valoarea specificată la început cu prima referință la coloana virtuală NEXTVAL
  • increment cu n - specifică incrementarea secvenței pentru fiecare referință la coloana virtuală NEXVAL. Dacă valoarea nu este specificată în mod explicit, valoarea implicită este 1. Pentru secvențe în creștere, pozitiv n este setat, pentru cele descrescătoare sau pentru secvențe de numărătoare inversă, negativă
  • minvalue - definește valoarea minimă creată de secvență. Dacă nu este specificat, Oracle aplică valoarea implicită pentru NOMINVALUE
  • nomvalue - indică faptul că valoarea minimă este 1 dacă secvența este în creștere sau -10 26. dacă secvența scade
  • maxvalue - definește valoarea maximă creată de secvență. Dacă nu este specificat, Oracle aplică valoarea implicită a NOMAXVALUE
  • nomaxvalue - indică faptul că valoarea maximă este de 10-27 dacă secvența este în creștere sau -1 dacă secvența este în scădere. Valoarea implicită este NOMAXVALUE
  • ciclu - permite secvenței să reutilizeze valorile create la atingerea MAXVALUE sau MINVALUE. Ie secvența va continua să genereze valori după ce atinge valoarea maximă sau minimă. Secvența în creștere generează minimul după ce atinge valoarea maximă. Secvența descrescătoare generează maximul după ce a atins minimul. Dacă modul ciclic este nedorit sau nu este setat explicit, Oracle aplică valoarea implicită, NOCYCLE. Nu puteți specifica CICLUL cu NOMAXVALUE sau NOMINVALUE. Dacă este necesară o secvență ciclică, trebuie să specificați MAXVALUE pentru secvența incrementală sau MINVALUE pentru scădere
  • nocycle - indică faptul că secvența nu poate continua să genereze valori după ce atinge valoarea maximă sau minimă
  • cachen - indică câte valori distribuie în avans secvența ORACLE și acceptă în memorie pentru acces rapid. Valoarea minimă a acestui parametru este 2. Pentru secvențele ciclice, această valoare trebuie să fie mai mică decât numărul valorilor din ciclu. Dacă caching-ul nu este dorit sau nu este setat explicit, Oracle aplică valoarea implicită de 20 de valori.
  • comandă - asigură generarea numerelor de ordine în ordinea interogărilor. Această opțiune poate fi utilizată, de exemplu, când numerele de secvențe apar ca marcă de timp. Ordonarea nu este, de obicei, importantă pentru secvențele care sunt folosite pentru a genera cheile primare. Dacă ordonarea este nedorită sau nu este setată explicit, Oracle aplică valoarea implicită NOORDER
  • noorder - nu garantează că numerele de secvențe sunt generate în ordinea interogărilor






Exemplul 1 Crearea unei secvențe
Crearea secvenței sequence_1.s Primul acces la această secvență va reveni 1. Al doilea apel va reveni la 11. Fiecare lovire ulterioară va returna o valoare care este mai mare decât cea precedentă:

Exemplul 2 Crearea unei secvențe
Creați secvența secvență_2. Secvența este în scădere, ciclică, când se atinge zero, secvența din nou se referă la cel mai mare număr. O astfel de secvență este convenabilă pentru a fi utilizată în acele programe în care, înainte de apariția unui eveniment, trebuie făcută o inversă:

După crearea secvenței, o puteți accesa prin pseudo-coloanele CURRVAL (returnează valoarea curentă a secvenței) și NEXTVAL (crește secvența și returnează următoarea valoare). Valorile secvenței curente și următoare sunt obținute de utilizatorii bazei de date prin executarea instrucțiunii SELECT. Secvențele nu sunt tabele, ci obiecte simple care generează numere întregi folosind coloane virtuale, deci aveți nevoie de o tabelă de dicționare a datelor DUAL publice. din care vor fi extrase datele coloanelor virtuale.

Prima referire la NEXTVAL returnează valoarea inițială a secvenței. Apelurile ulterioare către NEXTVAL modifică valoarea secvenței la o valoare care a fost determinată și returnează o nouă valoare. Orice apel la CURRVAL întoarce întotdeauna valoarea curentă a secvenței, adică valoarea returnată de ultimul acces la NEXTVAL. Înainte de a contacta CURRVAL în sesiunea curentă, trebuie să accesați cel puțin o dată NEXTVAL.

Într-o instrucțiune SQL, o incrementare de secvență poate fi efectuată o singură dată. Dacă propoziția conține mai multe apeluri către NEXTVAL pentru aceeași secvență, atunci ORACLE incrementează secvența o dată și returnează aceeași valoare pentru toate aparițiile NEXTVAL. Dacă propoziția conține referințe la ambele CURRVAL. și la NEXTVAL. apoi ORACLE incrementează secvența și returnează aceeași valoare ca pentru CURRVAL. și pentru NEXTVAL. indiferent de ordinea în care acestea apar în sentință.

În același timp, mai mulți utilizatori pot accesa aceeași secvență simultan, fără nici o așteptare sau blocare:

<имя последовательности>.CURRVAL

<имя последовательности>.NEXTVAL

Pentru a accesa valoarea curentă sau următoarea a unei secvențe aparținând schemei altui utilizator, utilizatorul trebuie să aibă fie privilegiul de SELECT pentru această secvență, fie privilegiul de sistem SELECTA orice secvență. și ar trebui să califice în continuare această secvență cu numele schemei care o conține:

Valorile CURRVAL și NEXTVAL sunt utilizate în următoarele locații:

  • în clauza SELECT a clauzei SELECT
  • în expresia VALUES propoziții INSERT
  • în clauza SET a clauzei UPDATE.

Nu puteți utiliza valorile CURRVAL și NEXTVAL în următoarele locuri:

  • într-o subcontractare
  • în clauza SELECT cu instrucțiunea DISTINCT
  • în clauza SELECT cu expresia GROUP BY sau ORDER BY
  • în clauza SELECT. combinate cu o altă declarație SELECT de către operatorul de setare UNION
  • în clauza WHERE a clauzei SELECT
  • în valoarea implicită (DEFAULT) a coloanei din clauza CREATE TABLE sau ALTER TABLE
  • în condiția de constrângere a CHECK.

SELECTAREA SECVENȚEI. Exemplul 3.
Acțiunea secvenței _2 când ajunge la MINVALUE:

SQL> SELECT secvența_2.NEXTVAL FROM dual;

INSCRIEȚI ÎN VALOAREA COMPANIEI (empseq.nextval, "LEWIS", "CLERK", 7902, SYSDATE, 1200, NULL, 20);
UPDATE emp SET-ul deptno = empseq.currval WHERE ename = 'Jones'

ALTER SEQUENCE. Exemplul 6.
Orice parametru de secvență poate fi modificat cu comanda ALTER SEQUENCE. Noua valoare are efect imediat. Toți parametrii de secvență care nu sunt specificați în comanda ALTER SEQUENCE rămân neschimbați:

ALTER SEQUENCE secvență_2

Atunci când secvența nu mai este necesară, poate fi ștearsă. Pentru aceasta, administratorul bazei de date sau proprietarul secvenței trebuie să execute comanda DROP SEQUENCE. Drept urmare, coloanele virtuale ale secvențelor NEXVAL și CURRVAL sunt convertite în nefolosite. Dar, dacă secvența a fost utilizată pentru a genera valorile cheilor primare, valorile create de aceasta vor rămâne în baza de date. Eliminarea în cascadă a valorilor generate de secvență nu are loc atunci când este șters.

SEQUENCE DROP. Exemplul 7.
Ștergerea SEQUENCE:







Articole similare

Trimiteți-le prietenilor: