Here is my trigger:
CREATE OR REPLACE FUNCTION update_played ()
RETURNS trigger
AS
$BODY$
DECLARE
v_count_played integer;
BEGIN
SELECT count(*) INTO STRICT v_count_played FROM history WHERE song_id = NEW.song_id;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RAISE EXCEPTION 'history count for song % not found', NEW.song_id;
WHEN TOO_MANY_ROWS THEN
RAISE EXCEPTION 'history count did not aggregate';
EXECUTE 'UPDATE song SET count_played = $1 WHERE id = $2'
USING v_count_played, NEW.song_id;
RETURN NULL;
END;
$BODY$
LANGUAGE plpgsql VOLATILE;
create trigger update_played_trigger
after insert on history
for each row
execute procedure update_played();
It gives the error:
sqlalchemy.exc.InternalError: (psycopg2.InternalError) control reached end of trigger procedure without RETURN