Re: Old/New - Mailing list pgsql-general
From | Bob Pawley |
---|---|
Subject | Re: Old/New |
Date | |
Msg-id | FC70EF794FC9408A8513ABB70CEF9083@desktop Whole thread Raw |
In response to | Old/New ("Bob Pawley" <rjpawley@shaw.ca>) |
Responses |
Re: Old/New
|
List | pgsql-general |
> 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? Yes. The above inserts two versions of the same row. Bob ----- Original Message ----- From: "Adrian Klaver" <adrian.klaver@gmail.com> To: "Bob Pawley" <rjpawley@shaw.ca> Cc: "Tom Lane" <tgl@sss.pgh.pa.us>; "Postgresql" <pgsql-general@postgresql.org> Sent: Friday, January 22, 2010 12:34 PM Subject: Re: [GENERAL] Old/New > 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.klaver@gmail.com > > -- > Sent via pgsql-general mailing list (pgsql-general@postgresql.org) > To make changes to your subscription: > http://www.postgresql.org/mailpref/pgsql-general
pgsql-general by date: