Throw an error from the trigger?
-
03-03-2021 - |
Question
When trigger returns NULL, row is not inserted, but result of the operation is still reported as successful (INSERT 0 0
). And in my opinion this is not logical, as one would probably want to handle this properly. I wonder if there's a way to throw an actual error from the trigger?
Solution
If the trigger function is written in PL/pgSQL, then you can raise errors with RAISE:
CREATE FUNCTION my_trigger() RETURNS trigger
LANGUAGE plpgsql
AS $$
BEGIN
IF random() < 0.01 THEN
RAISE EXCEPTION 'internal error';
END IF;
RETURN NEW;
END;
$$;
Licensed under: CC-BY-SA with attribution
Not affiliated with dba.stackexchange