Re: 'record old is unassigned yet' when using trigger in 7.1.1
От
Joseph Shraibman
Тема
Re: 'record old is unassigned yet' when using trigger in 7.1.1
Дата
Msg-id
3AF9D542.88C9FACD@selectacast.net
Список
Дерево обсуждения
Re: 'record old is unassigned yet' when using trigger in 7.1.1 Joseph Shraibman <jks@selectacast.net>
Re: 'record old is unassigned yet' when using trigger in 7.1.1 Tom Lane <tgl@sss.pgh.pa.us>
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 по дате отправления
От: Roberto Mello
Дата:
От: Joe Conway
Дата: