Zadnjič sem vam omenil tri načine avtomatičnega številčenja v SQL podatkovnih bazah, danes pa vam bom prikazal prvega. Posamezne načine vam bom prikazal na primeru treh popularnih SQL baz: Oracle, MSSQL in Sqlite.
Sekvence (SEQUENCE)
Izmed omenjenih treh podatkovnih baz poznata sekvence Oracle in MSSQL (vendar MS samo od letnika 2012 dalje!). Postopek dela s sekvencami je skrajno preprost.
- Najprej definiramo novo sekvenco
- Ko potrebujemo naslednjo številko jo iz sekvence zahtevamo
To je očitno zelo dober način za pridobivanje avtomatičnih številk. Sekvenco določimo z najmanj petimi parametri (ime sekvence, minimalna vrednost, maksimalna vrednost, preskok in začetna vrednost):
CREATE SEQUENCE sequence_name
MINVALUE value
MAXVALUE value
START WITH value
INCREMENT BY value;
Primer:
CREATE SEQUENCE seq_racuni
MINVALUE 1
MAXVALUE 99999999
START WITH 1
INCREMENT BY 1;
Kot je vidno sekvenca ni omejena na zaporedno številčenje, temveč lahko številčimo tudi s korakom večjim od 1 (INCREMENT BY). Ravnotako ni nujno, da se sekvenca začne z 1 (START WITH).
OPOMBA: Seveda je z uporabo najpreprostejše srednješolske matematike tako ali tako preprosto napisati poljubno funkcijo številčenja tako da pač napišemo neko funkcijo y = F(x), kjer X pač raste od 1 do N, y pa je številka, ki nas zanima. Recimo, če želimo začeti številčiti z 8 in potem nadaljevati s korakom 15: y = 8 + 15 * (x – 1)!
Uporabiti takšno sekvenco pa je še bolj preprosto.
V Oracle jo preprosto zahtevamo s funkcijo .nextval:
SELECT seq_racuni.nextval FROM dual;
oziroma
INSERT INTO racuni
(stevilka_racuna, znesek, datum...)
VALUES
(seq_racuni.nextval, 1123.4, SYSDATE...);
V MSSQL pa s konstruktom NEXT VALUE FOR:
SELECT NEXT VALUE FOR seq_racuni;
oziroma
INSERT INTO racuni
(stevilka_racuna, znesek, datum...)
VALUES
(SELECT NEXT VALUE FOR seq_racuni, 1123.4, SYSDATE...);