602SQL-Úplná dokumentace Index  

Syntaxe popisu sekvence (SQL)

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