Temat: Problem z wyzwalaczem
Mam taki oto kod:
CREATE FUNCTION f_ile_dodano()
RETURNS TRIGGER
AS $$
DECLARE
ile integer;
BEGIN
GET DIAGNOSTICS ile:=ROW_COUNT;
RAISE NOTICE '%',ile;
CASE ile
WHEN 0 THEN RAISE NOTICE 'Nie dodano zadnego rekordu';
WHEN 1,2,3,4,5,6 THEN RAISE NOTICE 'Dodano % rekordow',ile;
ELSE
BEGIN
RAISE NOTICE 'Dodano za wiele rekordow jednoczesnie. Maksymalna ilosc to 6 nowych rekordow';
ROLLBACK;
END;
END CASE;
RETURN NULL;
END;
$$ LANGUAGE 'PLPGSQL';
CREATE TRIGGER ile_dodano
AFTER INSERT ON motorniczy
FOR EACH STATEMENT EXECUTE PROCEDURE f_ile_dodano();
Nie widać w nim żadnych błędów, wszystko tworzy się bez problemu, a podczas wywołania nie wyskakują żadne błędy, ale efekt nie jest taki jakiego się spodziewam - wygląda na to, że wyzwalacz mimo wszystko wykonuje się przed insertem bo wydruki funkcji komunikują, że nie zostaje dodany żaden rekord, a tymczasem wszystkie 7 rekordów (które dla próby dodaję) dodaje się bez żadnego problemu. Czy ktoś widzi gdzie robię błąd?
Z góry dzięki za poświęcenie czasu