Kev <kevinjamesfield(at)gmail(dot)com> writes:
> ...because the case should force it to only evaluate 'old' when TG_OP
> = 'UPDATE' and otherwise ('INSERT') skip through to 't'. But this
> causes the same error on insert. I suspect it's because the select
> query gets parameterized and at that point the 'old' is missing,
> before the case even gets to be parsed.
Got it in one.
> How do I get around this
> without having two 'perform' statements?
What you need is two nested IF statements. The PERFORM in your example
is not relevant to the problem.
regards, tom lane