Re: Old/New

From: Adrian Klaver <adrian(dot)klaver(at)gmail(dot)com>
To: Bob Pawley <rjpawley(at)shaw(dot)ca>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Postgresql <pgsql-general(at)postgresql(dot)org>
Subject: Re: Old/New
Date: 2010-01-22 20:34:47
Message-ID: 4B5A0BE7.50507@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On 01/22/2010 11:20 AM, Bob Pawley wrote:
> I haven't found any documentation on how the underlying structure of
> PostgreSQL actually operates. So I have had to extrapolate.
>
> I think what you are saying is that on an update of a field the whole
> row which includes that field is affected to the extent that the whole
> row falls under the rules of New/Old.
>
> Is that a fair statement?

Maybe an example is in order.

Existing row
id desc pump1
1 test f

UPDATE foo set pump1 ='t';

OLD row
id desc pump1
1 test f

NEW row
id desc pump1
1 test t

At the point the AFTER UPDATE trigger is fired it has access to both the
OLD and NEW rows via the OLD.* and NEW.* variables per Toms explanation.

>
> However the present problem is that I get two or multiple rows returned
> when I update the pump1 field to 'True' - even when there is only a
> single row in the table.
>
> The complete After Update trigger follows -
>
> Begin
>
> If new.pump1 = 'True'
>
> then
>
> Insert into p_id.devices (p_id_id, process_id, fluid_id, status,
> process_graphics_id, device_description)
> values (new.p_id_id, new.process_id, new.fluid_id, 'Pump #1', '11',
> 'Pump');
>
> End if;
>
> If new.pump2 = 'True'
>
> then
>
> Insert into p_id.devices (p_id_id, process_id, fluid_id, status,
> process_graphics_id, device_description)
> values (new.p_id_id, new.process_id, new.fluid_id, 'Pump #2', '11',
> 'Pump');
>
> End if ;
>
> RETURN NULL;
>
> END;
>
> Bob
>
>

This is different from what you originally posted. Is the above still
causing problems?

--
Adrian Klaver
adrian(dot)klaver(at)gmail(dot)com

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Bob Pawley 2010-01-22 21:05:52 Re: Old/New
Previous Message Larry Rosenman 2010-01-22 20:05:54 Re: When is the release date for Postgres 8.5?