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, cache
CREATE TABLE schema.test (meno varchar(15), sekvencia integer);
CREATE 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

BEGIN;
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:


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:


SELECT zsj_id, SUM(plyn+elektrina+kvapalne) AS "počet domov" FROM schema.byty_vykurovanie GROUP BY zsj_id ORDER BY zsj_id ASC;


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.


# vytvorenie trigger funkcie

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