I do my best to read and google my way around issues, but I seem to be missing something. Probably simple too.
So I have a trigger function, in which I'd like to check if a particular column has changed. It works great, unless either the OLD or NEW values are NULL. The purpose is to create a audit/log of the record. I prefer to only test for certain columns, not the whole table.
CREATE OR REPLACE FUNCTION tr_employees_bu()
RETURNS trigger AS
$BODY$
begin
if (new.trainingdate <> old.trainingdate) then
insert into log_employees (employeeid,
source, datecreated,
createdby, oldvalue,newvalue)
values
(old.employeeid,'trainingdate',
now(),new.updatedby,
cast(old.codetrainingdate as varchar),
cast(new.codetrainingdate as varchar));
end if;
end;
$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100;
I tried playing with "coalesce" and "nullif" but didn't get anywhere with those. I think the "if" _expression_ is not right.
Thanks for any help!