Wyzwalacz liczący rekordy

0

Chcę napisać wyzwalacz, który po każdym wprowadzeniu nowego rekordu do tabeli wezwanie będzie wyświetlał, ile jest już łącznie rekordów w tej tabeli. Moja koncepcja jest następująca:

create function liczenie() returns trigger
language plpgsql
as $$ 
begin
select count(*) from wezwanie;
end;
$$;

ale niestety nie działa. Mógłby mi ktoś wskazać dobre rozwiązanie, bądź ewentualnie mnie na nie naprowadzić? Z góry dziekuję.

Edit: Tak, mam triger. I generalnie o ten return mi się chyba rozchodzi. Bo próbowałem go dać przed select (tzn return select count(*) from wezwanie;), ale to nie przeszło. A innego pomysłu nie mam niestety.

0
CREATE FUNCTION liczenie() RETURNS TRIGGER
LANGUAGE plpgsql
AS $$ 
declare 
abc integer;
BEGIN
SELECT COUNT(*) into abc FROM wezwanie;
return abc;
END;
$$;

Moze tak daj. Ale najpierw daj

CREATE FUNCTION liczenie() RETURNS INteger
LANGUAGE plpgsql
AS $$ 
declare 
abc integer;
BEGIN
SELECT COUNT(*) into abc FROM wezwanie;
return abc;
END;
$$;

i sprawdz czy zwraca wszystko co chcesz. A ogólnie zadeklarowałem zmienna abc jako integer a potem zrobiłem SELECT coś INTO abc czyli w tym abc powinno zwrócić to co chcesz.

0

Po każym insercie select count(*)? Dużo będzie tych insertów? :)

0

Baza danych NIC nie wyświetla. A liczenie COUNT(*) po każdym INSERT to poroniony pomysł. Jak już to AFTER INSERT FOR STATEMENT (postgreSQL). I nie wyświetlaj, tylko albo RAISE NOTICE albo zapisz do jakiejś tabeli. No i musisz mieć RETURN NEW, albo RETURN NULL (jeśli nie ma nastąpić akcja, ale bez Exception)

0

@masterO : mówisz - masz.
Nie chce mi się opisywać co to robi... http://4programmers.net/Pastebin/3195

1 użytkowników online, w tym zalogowanych: 0, gości: 1