Patrik
Upraveny Zdrojak
SQL
-- Function: public.fn_vrat_vypozicku(integer, date, boolean)
-- DROP FUNCTION public.fn_vrat_vypozicku(integer, date, boolean);
CREATE OR REPLACE FUNCTION public.fn_vrat_vypozicku(
id_vypozicka integer,
datum_vratenia date,
vypozicka_vratena boolean DEFAULT true)
RETURNS void AS
$BODY$
DECLARE
jeVratena bool;
BEGIN
select vyp.vypozicka_vratena
into jeVratena
from vypozicky vyp
where vyp.vypozicka_id = fn_vrat_vypozicku.id_vypozicka;
IF(jeVratena = false) THEN
UPDATE
public.vypozicky
SET
datum_vratenia = fn_vrat_vypozicku.datum_vratenia
, vypozicka_vratena = fn_vrat_vypozicku.vypozicka_vratena
WHERE
vypozicky.vypozicka_id = fn_vrat_vypozicku.id_vypozicka;
UPDATE
public.kniha
SET
zapozicane_kusy = zapozicane_kusy - 1
WHERE
public.kniha.kniha_id = (
select v.kniha_id
from vypozicky v
where v.vypozicka_id = fn_vrat_vypozicku.id_vypozicka);
UPDATE
public.zakaznik
SET
pocet_aktualne_pozicanych_knih = pocet_aktualne_pozicanych_knih - 1
WHERE
public.zakaznik.zakaznik_id = (
select v.zakaznik_id
from vypozicky v
where v.vypozicka_id = fn_vrat_vypozicku.id_vypozicka);
ELSE
RAISE EXCEPTION 'Kniha je už vrátena. Prerušenie transakcie.';
END IF;
RETURN;
EXCEPTION WHEN OTHERS THEN
RAISE;
END
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION public.fn_vrat_vypozicku(integer, date, boolean)
OWNER TO postgres;
Neformátovaný
Přidáno: 4.1.2019
Expirace: Neuvedeno