有三个表 users(字段有userid(主键),utype(1代表会员 0代表普通用户)
,orders (字段有 oid(订单ID),uid(userid的外键),ostate(3代表完成订单) 等其他键)
orderitem订单项目表(主要字段有 oid(orders中oid的外键),)利用触发器实现订单项目中字段 price*icount>1000 后使得users表中的字段utype=1并且orders表中的ostate=3下面是我做的一个触发器 但是这个触发器存在问题 不成功啊 希望那为哥哥姐姐能帮帮忙!我是出学者,上课老师讲得不好
从来就没听过他的课 我现在感到有些后悔啊!呜呜呜呜~~~~~~~~ 实在不行希望能给出个解决方案
苦在orderitem与users怎么关联起来 触发器不熟悉啊!
create or replace trigger trigger_name update or insert of price ,icount on orderitem
for each row
declare pprice orderitem.price%type;
begin
if(price*icount>1000)
pprice:=:new:price; update orders set ostate:='3'
where price=pprice and orders.oid=orderitem.oid;
update users set utype:='1'
where price=pprice and orders.oid=orderitem.oid and where orders.uid=users.userid
dbms_putout_line('升级了!');
else
dbms_putout_line('没有升级!');
end if ;
end;
,orders (字段有 oid(订单ID),uid(userid的外键),ostate(3代表完成订单) 等其他键)
orderitem订单项目表(主要字段有 oid(orders中oid的外键),)利用触发器实现订单项目中字段 price*icount>1000 后使得users表中的字段utype=1并且orders表中的ostate=3下面是我做的一个触发器 但是这个触发器存在问题 不成功啊 希望那为哥哥姐姐能帮帮忙!我是出学者,上课老师讲得不好
从来就没听过他的课 我现在感到有些后悔啊!呜呜呜呜~~~~~~~~ 实在不行希望能给出个解决方案
苦在orderitem与users怎么关联起来 触发器不熟悉啊!
create or replace trigger trigger_name update or insert of price ,icount on orderitem
for each row
declare pprice orderitem.price%type;
begin
if(price*icount>1000)
pprice:=:new:price; update orders set ostate:='3'
where price=pprice and orders.oid=orderitem.oid;
update users set utype:='1'
where price=pprice and orders.oid=orderitem.oid and where orders.uid=users.userid
dbms_putout_line('升级了!');
else
dbms_putout_line('没有升级!');
end if ;
end;
where users.userid:=:New.userid;
我看了别人提供的一个方法 请你指点:
create or replace trigger hunhetrigger
after insert or update on orderitem
for each row
declare
number;
begin
select userid into
from users u,orders ord,orderitem oder
where u.userid = ord.uid
and ord.oid = oder.oid
group by userid
having sum(oder.price*oder.icount)>1000
if is not null then
update users set utype = '1' where userid = ;
update orders set ostate = '3' where uid= ;
end if;
end; 无论如何 我为你能给我答复 而感到非常高兴 真的心存感激 我是前几天注册的 第一个贴 你是第一个回复的! 很感谢~
o(∩_∩)o...!
for each row
begin
if (:new.price*:new.icount>1000) then
update users set utype = 1 where oid=:new.oid;
update orders set ostate=3 where oid=:new.oid;
end if;
end;