Takto by vyzeralo prevedenie transakcie medzi dvoma účtami. Na jeden účet suma pribudne a z druhého ubudne.
1
2
3
4
5
6
UPDATE ucty
SET zostatok = zostatok - 14.00
WHERE majitel_uctu = 'Rob';
UPDATE ucty
SET zostatok = zostatok + 14.00
WHERE majitel_uctu = 'Maria';
Riešenie pomocou UPDATE má však veľa chýb. K príkladu, čo by sa stalo keby Rob nemal dostatok financií (kreditu) na učte? Jeho financie by šli do mínusu a to je nechcený stav.
Funkcia
Jednoduché riešenie kontroly integrity pomocou funkcie v PL/pgSQL. Funkcia ma tri argumenty platcu, príjemcu a čiastku, ktorá poputuje z účtu na účet. Funkcia taktiež vracia stav platby.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
CREATE OR REPLACE FUNCTION transakcia(
i_platca TEXT,
i_prijemca TEXT,
-- Numeric(15,2) znamena ze max 15 cisel a 2 decimalne