Re: Old/New
От | Adrian Klaver |
---|---|
Тема | Re: Old/New |
Дата | |
Msg-id | 4B5A0BE7.50507@gmail.com обсуждение исходный текст |
Ответ на | Re: Old/New ("Bob Pawley" <rjpawley@shaw.ca>) |
Список | 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.klaver@gmail.com
В списке pgsql-general по дате отправления: