On 8/4/06, David Garamond <[EMAIL PROTECTED]> wrote:
On 8/4/06, Richard Huxton <dev@archonet.com> wrote:
> David Garamond wrote:
> > Dear all,
> >
> > Please see SQL below. I'm already satisfied with everything except I
> > wish in
> > #4, mtime got automatically updated to NOW() if not explicitly SET in
> > UPDATE
> > statement. Is there a way to make the mtime column behave more like I
> > wanted? Thanks in advance.
>
> Just check for OLD.mtime = NEW.mtime, or am I missing something here?
>
How do I differentiate between:
UPDATE t SET mtime=mtime ...;
in which mtime is specifically set and should not change, and
UPDATE t SET foo=bar ...;
in which mtime is not mentioned and should be updated automagically to
NOW().
How about:
create or replace function
update_times()
returns trigger as $$
begin
if TG_OP='INSERT' then
new.ctime = coalesce(new.ctime,now());
new.mtime = coalesce(new.mtime,now());
elsif TG_OP='UPDATE' then
new.ctime = old.ctime;
new.mtime = now();
end if;
return new;
end;
$$ language plpgsql;
Regards,
Rodrigo
---------------------------(end of broadcast)---------------------------
TIP 6: explain analyze is your friend