这样的触发器该如何做啊?我想对person表的操作都自动更新stock表的qty数值

xxxuan 2010-05-14 08:33:58
这样的触发器该如何做啊?
有两个表:person(per_no,qty),stock(per_no,qty)
我想对person表的操作都自动更新stock表的qty数值。
1)在person表新增时,则stock表对应的per_no号的qty值为
stock.qty=stock.qty+person.qty
2)在person表删除时,则stock表对应的person.per_no=stock.per_no的
stock.qty=stock.qty+person.qty
2)在person表更新时,则stock表对应的person.per_no=stock.per_no的
stock.qty=stock.qty-person.qty旧值+person.qty新值
...全文
148 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xxxuan 2010-05-14
  • 打赏
  • 举报
回复
非常感谢!!!!!
心中的彩虹 2010-05-14
  • 打赏
  • 举报
回复

--多写了as
create or replace trigger tri_person before insert or delete or update on person
for each row
begin
if inserting then
update stock set stock.qty=stock.qty+:new.person.qty
where per_no=:new.per_no
elsif deleting then
update stock set stock.qty=stock.qty+:old.person.qty
where per_no=:old.per_no
else
update stock set stock.qty=stock.qty-:old.person.qty+:new.person.qty
where per_no=:new.per_no
end if;
commit;
end;





心中的彩虹 2010-05-14
  • 打赏
  • 举报
回复


[code=SQL]
create or replace trigger tri_person before insert or delete or update on person
for each row
as
begin
if inserting then
update stock set stock.qty=stock.qty+:new.person.qty
where per_no=:new.per_no
elsif deleting then
update stock set stock.qty=stock.qty+:old.person.qty
where per_no=:old.per_no
else
update stock set stock.qty=stock.qty-:old.person.qty+:new.person.qty
where per_no=:new.per_no
end if;
commit;
end;





[/code]
gelyon 2010-05-14
  • 打赏
  • 举报
回复
我的条件写错了 per_son应该为per_no

create or replace trigger tg_per
after insert or update or delete on person
for each row
begin
if inserting then
update stock set qty=qty+:new.qty where per_no=:new.per_no;
elsif deleting then
update stock set qty=qty-:old.qty where per_no=:old.per_no;
else
update stock set qty=qty-:old.qty+:new.qty where per_no=:new.per_no;
end if;
end;
tangren 2010-05-14
  • 打赏
  • 举报
回复
gelyon 2010-05-14
  • 打赏
  • 举报
回复
create or replace trigger tg_per
after insert or update or delete on person
for each row
begin
if inserting then
update stock set qty=qty+:new.qty where per_son=:new.per_son;
end;
if deleting then
update stock set qty=qty-:old.qty where per_son=:old.per_son;
end;
if updating then
update stock set qty=qty-:old.qty+:new.qty where per_son=:new.per_son;
end;
end;

17,140

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧