În DBMS PostgreSQL, secvențele (SEQUENCE [1]) sunt folosite pentru a obține valori consecutive unice.
Sintaxa generală pentru crearea unei secvențe este:
Exemplu de sarcină: trebuie să creați un contor pentru o cheie unică în tabelul de conținut. Sintaxa poate fi după cum urmează:
În acest exemplu, un element INCREMENT opțional [BY] a fost setat 1. Acest punct de control ce număr pentru a adăuga ultimul element al secvenței pentru a obține noi. Valoarea implicită este 1.
Elementele NO MINVALUE și NO MAXVALUE elimină constrângerile privind valorile maxime și minime ale elementului de secvență.
Clauza opțională CACHE a fost setată la 1. Acest element monitorizează numărul următoarelor elemente de secvență predefinite. Valoarea implicită este 1.
PostgreSQL acceptă, de asemenea, tipurile de date SERIAL și BIGSERIAL. Se creează automat o secvență. De exemplu:
tradus automat în:
O secvență creată automat are un nume al formularului <таблица>_<поле_serial>_seq, unde tabela și domeniul_serial sunt, respectiv, nume de tabele și câmpuri cu tipul SERIAL.
Funcții pentru lucrul cu secvențe:
- currval (regclass) - returnează rezultatul ultimului apel la nextval () pentru secvența dată
- lastval () - returnează rezultatul ultimului apel nextval ()
- nextval (regclass) - generează un nou element al secvenței specificate și îl returnează
- setval (regclass, bigint [, boolean]) - modifică valoarea curentă a secvenței și o returnează. Ultimul parametru opțional is_alled indică următorul apel la nextval ()
Capcanele:
- Când ștergeți înregistrările în numerotare, apar pauze. Rezolvarea problemei: nu necesită intervenție.
- Este posibilă inserarea incorectă a înregistrării cu numărul SEQUENCE care nu este încă folosit. De exemplu:
Ultima solicitare va provoca o eroare. valoarea cheie cheie primară generată automat va fi deja prezentă în tabel.
- Aflați valoarea următorului element al secvenței:
- Găsiți valoarea maximă a indicelui din tabel:
- Măriți valoarea "contorului" dacă este necesar:
- Verificați rezultatul acțiunilor dvs.: