Številčenje v SQL podatkovnih bazah II

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.

  1. Najprej definiramo novo sekvenco
  2. 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...);

Komentirajte prispevek

This site uses Akismet to reduce spam. Learn how your comment data is processed.