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
|