CREATE OR REPLACE TRIGGER tabb_afttrig
AFTER INSERT OR DELETE
ON tabb
FOR EACH ROW
DECLARE
row_taba taba%rowtype;
BEGIN
IF INSERTING THEN
select * into row_taba from taba where taba.id=:new.id;
INSERT INTO tabc (person,fs)
SELECT :New.id,taba.f1+taba.f2+taba.f3 FROM dual;
IF SQL%ROWCOUNT<>1 OR SQL%ROWCOUNT IS NULL THEN
raise_application_error(-20101,'自已写');
END IF;
ELSE
DELETE FROM tabc WHERE person=:OLD.person;
IF UPDATIND THEN
INSERT INTO tabc (person,fs)
SELECT :New.id,taba.f1+taba.f2+taba.f3 FROM dual;
IF SQL%ROWCOUNT<>1 OR SQL%ROWCOUNT IS NULL THEN
raise_application_error(-20101,'自已写');
END IF;
END IF;
END IF;
END;--大致这样吧
AFTER INSERT OR DELETE
ON tabb
FOR EACH ROW
DECLARE
row_taba taba%rowtype;
BEGIN
IF INSERTING THEN
select * into row_taba from taba where taba.id=:new.id;
INSERT INTO tabc (person,fs)
SELECT :New.id,taba.f1+taba.f2+taba.f3 FROM dual;
IF SQL%ROWCOUNT<>1 OR SQL%ROWCOUNT IS NULL THEN
raise_application_error(-20101,'自已写');
END IF;
ELSE
DELETE FROM tabc WHERE person=:OLD.person;
IF UPDATIND THEN
INSERT INTO tabc (person,fs)
SELECT :New.id,taba.f1+taba.f2+taba.f3 FROM dual;
IF SQL%ROWCOUNT<>1 OR SQL%ROWCOUNT IS NULL THEN
raise_application_error(-20101,'自已写');
END IF;
END IF;
END IF;
END;--大致这样吧
解决方案 »
- 你牛,你就来留下你的牛印!
- 请问带有游标的存储过程的递归调用,为什么会出现超出了打开的最大的游标数
- 如何查询不关联的数据.
- *.dbf文件和*.ora文件的区别
- 问一个比较弱质的问题啊,.Net开发的时候,装了oracle data provider for .net 还需要装Orcle客户端吗?
- 问一个简单的sql语句?
- 在线求助...请问一下ORACLE中什么函数把字符串转化为时间类型的
- 弱智问题:怎样建立函数?
- 求大神帮新人解决一下oracle触发器问题
- 关于Oracle事务提交的问题
- worry:oracle数据库之间可不可以实现实时数据同步?
- Client端不安裝Oracle要如何联结服务器
在IF UPDATIND THEN
也要加
before insert or update or delete on b
for each row
begin
if inserting then
insert into c (person,fs) select :new.person,f1+f2+f3 from a where id=:new.id;
elsif updating then
update c set fs=(select f1+f2+f3 from a where id=:old.id);
else
delete from c where person=:old.person;
end if;
end;
/