CREATE OR REPLACE TRIGGER tri_change
BEFORE INSERT OR DELETE OR UPDATE ON B
FOR EACH ROW
DECLARE
v_a CHAR(1);
v_name varchar2(10);
BEGIN
IF INSERTING THEN
if :new.a='0' or :new.a='1' then
v_a:= :new.a;
v_name:=:new.name;
update A set c=v_a where name=v_name;
end if;
ELSIF UPDATING THEN
if :new.a='0' or :new.a='1' then
v_a:= :new.a;
v_name:=:new.name;
update A set c=v_a where name=v_name;
end if;
ELSE
if :old.a='0' or :old.a='1' then
v_a:= :old.a;
v_name:=:old.name;
update A set c=v_a where name=v_name;
end if;
END IF;
END tri_change;
/我建议如果你的存储过程只是做到修改A表的话,可以直接做到触发器里;
BEFORE INSERT OR DELETE OR UPDATE ON B
FOR EACH ROW
DECLARE
v_a CHAR(1);
v_name varchar2(10);
BEGIN
IF INSERTING THEN
if :new.a='0' or :new.a='1' then
v_a:= :new.a;
v_name:=:new.name;
update A set c=v_a where name=v_name;
end if;
ELSIF UPDATING THEN
if :new.a='0' or :new.a='1' then
v_a:= :new.a;
v_name:=:new.name;
update A set c=v_a where name=v_name;
end if;
ELSE
if :old.a='0' or :old.a='1' then
v_a:= :old.a;
v_name:=:old.name;
update A set c=v_a where name=v_name;
end if;
END IF;
END tri_change;
/我建议如果你的存储过程只是做到修改A表的话,可以直接做到触发器里;
before insert or update b
for each row
begin
if :new.a=0 or :new.a=1 then
update a set c=:new.a where name=:new.name;
end if;
end;
/