SEKVENCIE
Umožňujú definovať generátor nejakej sekvencie jedinečných hodnôt podľa nejakého inkrementačného predpisu. Parametre: increment, minvalue, maxvalue, start, cacheCREATE SEQUENCE schema.test_sekvencia MINVALUE 50 INCREMENT 5 MAXVALUE 150;
INSERT INTO schema.test VALUES ('Dano', nextval('schema.test_sekvencia'),('Martin', nextval('schema.test_sekvencia'));
-- Alebo pridanie sekvencie existujúcej tabuľke:
ALTER TABLE schema.test ADD COLUMN sekvencia2 integer;
UPDATE schema.test SET sekvencia2 = nextval('schema.test_sekvencia');
Tranzakcie
Tranzakcie slúžia na vykonanie niekoľkých SQL príkazov naraz
UPDATE schema.test SET sekvencia = NULL WHERE meno = 'Marek';
SAVEPOINT test1;
UPDATE schema.test SET sekvencia = NULL WHERE meno = 'Maroš';
-- pomýlil som sa a nechcem vložiť záznam NULL ale číslo 10
ROLLBACK TO test1;
UPDATE schema.test SET sekvencia = 10 WHERE meno = 'Maroš';
COMMIT;
Zabudované funkcie
PostgreSQL obsahuje veľmi veľké množstvo zabudovaných funkcii, ktoré môžeme použiť pri výrazoch SELECT, Dostupné funkcie možno rozdeliť do nasledujúcich kategórii:
- - Ekvivalenty operátorov
- - Matematické funkcie
- - Funkcie na prácu s reťazcami znakov
- - Funkcie na prácu s dátumom a časom
- - Text-formátujúce funkcie
- - Funkcie IP adries
Niektoré vybrané matematické funkcie
Funkcia | Popis |
---|---|
abs(x) | Absolútna hodnota |
degrees(r) | Konverzia radiánov na stupne |
radians(d) | Konverzia stupňov na radiány |
pow(x,y) | umocní x mocninou y |
round(x,d) | Zaokrúhli číslo x na špecifikovaný počet desatinných miest (d) |
sqrt(x) | odmocnina (x) |
sum(expression) | suma výrazu všetkých vstupných hodnôt |
atď ... |
Niektoré vybrané trigonometrické funkcie
Funkcia | Popis |
---|---|
sin | Sínus |
cos | Kosínus |
tan | Tangens |
cot | kotangens |
atď ... |
Niektoré vybrané funkcie pracujúce s reťazcami
Funkcia | Popis |
---|---|
char_length(s) | Dĺžka reťazca |
lower(s) | konvertuje reťazec na malé písmená |
upper(s) | Konvertuje reťazec na veľké písmená |
position(s1 in s2) | Pozícia, na ktorej sa s1 objaví v s2 |
substring(s from n for m) | Extrahuje subreťazec z "s" dĺžky "m" začínajúci na pozícii "n" |
trim([leading | trailing | both] [s1] from s2) | Odstráni znaky "s1" z reťazca "s2", buď zo začiatku, alebo konca, alebo z oboch. Ako prednastavené: odstráni medzery ak "s1" nieje dané |
atď ... |
GROUP BY
Klauzula GROUP BY rozdeľuje riadky vrátené SELECT-om do skupín. Potom pre každú skupinu je možné použiť agregačnú funkciu - napr. výpočet sumy všetkých domov z údajov o vykurovaní v ZSJ:
Trigger
Trigger je funkcia automaticky vyvolaná keď nastane nejaká událosť napr. INSERT, UPDATE, DELETE a viaže sa na tabuľku.
Na vytvorenie nového TRIGGERa je potrebné definovať funkciu TRIGGERa a potom túto funkciu previazať s tabuľkou.
PotgreSQL rozlišuje dva hlavné typy trigrov a to na úrovni "row" a "statement". Možno špecifikovať kedy sa má spustiť
- pred, alebo po události. Použitie napr. ak je nový riadok pridaný do tabuľky zákazníci,
iné riadky musia byť taktiež vytvorené v iných tabuľkách ako napr. tabuľky banky a úvery.
Nevýhodou je, že používateľ databázy musí vedieť o existencii danej funkcie triggeru a jej logike aby bolo možné zistiť efekty zmeny údajov.
CREATE FUNCTION trigger_funkcia() RETURN trigger AS ...
# vytvorenie triggra
CREATE TRIGGER meno {BEFORE | AFTER | INSTEAD OF} {event [OR ... ]} ON table_name [FOR [EACH] {ROW | STATEMENT}] EXECUTE PROCEDURE trigger_function