“invalid transaction termination” in Postgres when trying to update a value using a function
-
06-03-2021 - |
Pergunta
I'm new to postgres. I defined a function like this:
CREATE OR REPLACE FUNCTION increment_count()
RETURNS TRIGGER LANGUAGE plpgsql
AS $$
BEGIN
UPDATE posts SET count=count+1 WHERE pid=NEW.pid;
COMMIT;
END;
$$;
This gives me error invalid transaction termination
Solução
You can not commit in a trigger, and you forgot the return statement.
CREATE OR REPLACE FUNCTION increment_count()
RETURNS TRIGGER LANGUAGE plpgsql
AS $$
BEGIN
UPDATE posts SET count=count+1 WHERE pid=NEW.pid;
return null;
END;
$$;
In case of a BEFORE trigger, "return NEW" should be used!
Licenciado em: CC-BY-SA com atribuição
Não afiliado a dba.stackexchange