From: | Bob Pawley <rjpawley(at)shaw(dot)ca> |
---|---|
To: | Postgresql <pgsql-general(at)postgresql(dot)org> |
Subject: | After Update Triggers |
Date: | 2006-11-17 22:26:57 |
Message-ID: | 004e01c70a97$7ec57e00$8e904618@owner |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Hi All
I have three tables
Create Table Pipe
( pipe_id serial ,
fluid_id int4
) ;
Create Table Equipment
(Equipment_id serial,
fluid_id int4
) ;
Create Table Processes
( Fluid_id serial
fluid varchar (15),
ip_op_equipment varchar (5)
) ;
The interface inserts the name of the fluid into column processes.fluid.
This is immediately followed by an update to column processes.ip_op_equipment of either "ip', 'op' or 'eq'.
Using the following trigger the fluid_id of the Process table is to be distributed to either the pipe or equipment under the following circumstance.
1 - If ip_op_equipment = 'ip' or 'op' insert the fluid_id into the Pipes table.
2 - If ip_op_equipment - 'eq' insert into Equipment.
-------
Create or Replace function base() returns trigger as $$
begin
if new.ip_op_equipment = 'ip' or new.ip_op_equipment = 'op'
or new.ip_op_equipment = 'oth'
then
insert into p_id.pipes (fluid_id) values (new.fluid_id);
elseif
new.ip_op_equipment = 'eq'
then
insert into p_id.equipment (fluid_id) values (new.fluid_id);
end if;
return null;
end;
$$ language plpgsql ;
Create Trigger aa1 after update on p_id.processes
for each row execute procedure base();
-------
When I trigger 'after insert' the function doesn't work because the ip_op_equipment condition is an update. When I manually enter directley into the table this trigger works fine when both the fluid and ip_op_equipment are entered as one entry.
When I trigger 'after update' every row in the Processes table is inserted into the other tables depending on the conditionals. I end up with multiple inserts of the same information.
Is it possible to create a trigger that inserts only one row for each entry?
Bob Pawley
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2006-11-17 22:31:07 | Re: Allowing SYSDATE to Work |
Previous Message | Matt Miller | 2006-11-17 22:26:37 | Allowing SYSDATE to Work |