|
Sekvence | Příkaz CREATE SEQUENCE |
popis_sekvence :== SEQUENCE [schéma.]jméno_sekvence [ parametr_sekvence … ]
parametr_sekvence :== AS typ | START WITH celé_číslo | RESTART WITH celé_číslo
| INCREMENT BY celé_číslo
| MAXVALUE celé_číslo | NOMAXVALUE | MINVALUE celé_číslo | NOMINVALUE
| CYCLE | NOCYCLE | CACHE celé_číslo | NOCACHE | ORDER | NOORDER
Celé_číslo je číslo v rozsahu BIGINT (64 bitový integer - tj. cca +/-9223372036854775000).
Při vytváření nebo modifikování sekvence lze zadat tyto údaje:
Se sekvencí je také spojen celočíselný údaj udávající její aktuální hodnotu, tedy hodnotu, která se získá při příštím generování hodnoty ze sekvence.
Je-li uveden typ hodnot sekvence, musí být celočíselný. 602SQL tento typ ignoruje a vždy používá typ BIGINT. Klauzule AS je povolena pouze pro kompatibilitu se standardem SQL 2003.
Implicitní hodnoty nezadaných parametrů při vytváření sekvence jsou START WITH 0 INCREMENT BY 1 NOMINVALUE NOMAXVALUE NOCYCLE CACHE 20. Při modifikování sekvence se parametry neuvedené v příkazu ALTER SEQUENCE zachovají z původní definice sekvence. Zachová se také hodnota, která se má vygenerovat jako příští (pokud patří do intervalu mezi maximální a minimální hodnotou).
Krok sekvence nesmí být nulový. Je-li krok záporný, pak hodnoty v sekvenci klesají, jinak rostou.
Maximum musí být větší než minimum a počáteční hodnota sekvence musí ležet mezi nimi. Je-li krok sekvence kladný, pak implicitní hodnota minima je 1, implicitní hodnota maxima je největší zobrazitelné kladné celé číslo a počáteční hodnota se rovná minimu. Je-li krok sekvence záporný, pak implicitní hodnoty minima je nejmenší zobrazitelné záporné celé číslo, implicitní hodnota maxima je –1 a počáteční hodnota se rovná maximu.
Je-li pomocí parametru CYCLE nastaveno cyklické generování čísel, pak sekvence po dosažení svého maxima (nebo minima v případě klesající sekvence) automaticky vygeneruje jako další hodnotu své (zadané nebo implicitní) minimum (resp.maximum).
Použití vyrovnávací paměti zrychluje generování hodnot v sekvenci. Při první potřebě alokovat hodnotu se naplní celá cache. Pokud některé hodnoty z cache nebudou využity, vrátí se do sekvence při ukončování serveru. Není-li server korektně ukončen v důsledku výpadku systému, hodnoty v cache budou ztraceny.
Parametry ORDER a NOORDER se ignorují.
Při exportu aplikace s daty se zachová současná hodnota sekvence, při exportu aplikace bez dat se sekvence zresetuje (nastaví na počáteční hodnotu).
Příklad použití:
CREATE SEQUENCE SEQ10
START WITH 0
INCREMENT BY 10
NOMAXVALUE
NOMINVALUE
CACHE 5
NOCYCLE
Odlišnosti od normy
Viz
Sekvence | Příkaz CREATE SEQUENCE |