1

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 wink

2

Odp: Problem z wyzwalaczem

--
The best thing about modern society is how easy it is to avoid contact with it.

3

Odp: Problem z wyzwalaczem

4

Odp: Problem z wyzwalaczem

Wielkie dzięki za pomoc. Wasze sugestie bardzo mi pomogły i wreszcie udało mi się dokończyć projekt, więc jeszcze raz wielkie dzięki wink