Sekvence (SQL)

Sekvence je objektem slou₧φcφm ke generovßnφ posloupnosti celoΦφseln²ch hodnot, zejmΘna unikßtnφch klφΦ∙.

Sekvence nenφ svßzßna s ₧ßdnou konkrΘtnφ tabulkou, tak₧e se dß pou₧φt k vytvß°enφ klφΦ∙, kterΘ budou unikßtnφ nejen v rßmci tabulky, ale i v rßmci skupiny tabulek.

Sekvence se dajφ vytvß°et, modifikovat a ruÜit bu∩ z v²vojovΘho prost°edφ WinBase602 nebo pomocφ SQL p°φkaz∙ CREATE SEQUENCE, ALTER SEQUENCE a DROP SEQUENCE. Sekvence jsou v rßmci aplikace oznaΦeny sv²m jmΘnem.

Na hodnoty generovanΘ pomocφ sekvence se v SQL p°φkazech odkazuje pomocφ zßpis∙:

jmΘno_sekvence.CURRVAL a jmΘno_sekvence.NEXTVAL

NEXTVAL oznaΦuje novou hodnotu v sekvenci, CURRVAL oznaΦuje hodnotu naposled vrßcenou pomocφ NEXTVAL. Volßnφ CURRVAL se nesmφ pou₧φt p°ed NEXTVAL, jinak dojde k chyb∞ NO_CURRENT_VAL. Pokud vÜechny hodnoty p°edepsanΘ definicφ sekvence ji₧ byly vyΦerpßny a nenφ nastaven p°φznak CYCLE, pak p°i volßnφ NEXTVAL dojde k chyb∞ WinBase Φ. 219 (SEQUENCE_EXHAUSTED).

Pokud klient alokuje novou hodnotu pomocφ volßnφ NEXTVAL a potΘ odvolß transakci, alokovanß hodnota se do sekvence nevracφ a nebude tedy vyu₧ita.

Zm∞nit p°φÜtφ hodnotu, kterou sekvence vrßtφ, lze v SQL pouze tak, ₧e se sekvence zruÜφ a znovu vytvo°φ. Na °φdicφm panelu v²vojovΘho prost°edφ lze sekvenci resetovat (nastavit na nov∞ zadanΘ hodnoty vΦetn∞ poΦßteΦnφ hodnoty).

Z prost°edφ vnit°nφho programovacφho jazyka lze novou hodnotu generovanou v sekvenci SEQ zφskat do globßlnφ celoΦφselnΘ prom∞nnΘ VAL p°φkazem:

#sql SET :>val=SEQ.NEXTVAL

Na °φdicφm panelu v²vojovΘho prost°edφ WinBase602 lze pomocφ zßlo₧ky Nßhled zobrazit popis zvolenΘ sekvence. V komentß°i p°ed touto definicφ je p°φÜtφ hodnota, kterß bude ze sekvence zφskßna. Pokud je pro sekvenci definovßna vyrovnßvacφ pam∞¥, pak to nemusφ b²t hodnota, kterou vrßtφ p°φÜtφ volßnφ NEXTVAL, proto₧e n∞kterΘ dosud nepou₧itΘ hodnoty mohou b²t ve vyrovnßvacφ pam∞ti.

Podrobnosti o sekvencφch lze najφt na nßsledujφcφch strßnkßch:

OdliÜnosti od normy