PostgreSQL 8.4 не поддерживает КОГДА с триггерами, из тонкой инструкции :
Синопсис
CREATE TRIGGER name { BEFORE | AFTER } { event [ OR ... ] }
ON table [ FOR [ EACH ] { ROW | STATEMENT } ]
EXECUTE PROCEDURE funcname ( arguments )
Там нет КОГДА. Вы можете поместить логику WHEN в свою функцию триггера:
if old.balance is not distinct from new.balance then
return new;
end if;
-- The rest of the trigger...
или обновите как минимум до PostgreSQL 9.0 и используйте WHEN при создании триггера.