Hello it's not bug, but feature.
> > CREATE OR REPLACE FUNCTION trg_mytable_after() > RETURNS trigger AS > $BODY$ > BEGIN > IF TG_OP = 'UPDATE' OR TG_OP = 'DELETE' THEN > IF (CASE WHEN TG_OP = 'DELETE' THEN TRUE ELSE OLD.a <> NEW.a END) THEN > RAISE NOTICE 'OK!'; > END IF; > END IF; > CASE expression isn't evaluated internally in plpgsql, but it is transformed to SQL statement, that is evaluated by SQL procession. You code is some like: DECLARE result boolean; BEGIN IF TG_OP = 'UPDATE' OR TG_OP = 'DELETE' THEN EXECUTE 'CASE WHEN $1 = 'DELETE' THEN true ELSE $2.a <> $3.a END' USING TG_OP, OLD.a, OLD.b INTO result; IF result THEN RAISE NOTICE 'OK!'; Regards Pavel Stehule -- Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-bugs