Re: 'record old is unassigned yet' when using trigger in 7.1.1 - Mailing list pgsql-sql

From Joseph Shraibman
Subject Re: 'record old is unassigned yet' when using trigger in 7.1.1
Date
Msg-id 3AF9D542.88C9FACD@selectacast.net
Whole thread Raw
In response to 'record old is unassigned yet' when using trigger in 7.1.1  (Joseph Shraibman <jks@selectacast.net>)
Responses Re: 'record old is unassigned yet' when using trigger in 7.1.1  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-sql
OK I tried:
create function utbl_set_statchangedate() returns opaque as '      begin      IF TG_OP = \'INSERT\' OR OLD.status <>
NEW.status    THEN    NEW.statchangedate = CURRENT_DATE;     END IF;return NEW;end;
 
' language 'plpgsql';

... but that had the same problem.  So then I tried:

create function utbl_set_statchangedate() returns opaque as 
'begin      IF TG_OP = \'UPDATE\'     THEN         NEW.statchangedate := CURRENT_DATE;     ELSE IF OLD.status <>
NEW.status    THEN    NEW.statchangedate := CURRENT_DATE;     END IF;return NEW;end;
 
' language 'plpgsql';

but now I'm getting:
NOTICE:  plpgsql: ERROR during compile of utbl_set_statchangedate near
line 10
ERROR:  parse error at or near ";"



Joe Conway wrote:
> 
> >        begin
> >      IF OLD.status <> NEW.status
> >      THEN
> > NEW.statchangedate = CURRENT_DATE;
> >      END IF;
> > return NEW;
> > end;
> >
> > The problem is when a new row is inserted I get this error message:
> > ERROR:  record old is unassigned yet
> > ... and the insert fails.
> >
> > It doesn't matter if the trigger is before or after.
> 
> OLD doesn't exist on inserts, only on update and delete. If you want to use
> the same function for both insert and update use the TG_OP variable and an
> if statement. See
> http://www.postgresql.org/idocs/index.php?plpgsql-trigger.html
> 
> Hope this helps,
> 
> Joe

-- 
Joseph Shraibman
jks@selectacast.net
Increase signal to noise ratio.  http://www.targabot.com


pgsql-sql by date:

Previous
From: Roberto Mello
Date:
Subject: Re: Information passing, Perl, Unix and Postgresql Database
Next
From: "Joe Conway"
Date:
Subject: Re: 'record old is unassigned yet' when using trigger in 7.1.1