早教吧作业答案频道 -->其他-->
oracle怎么获取更新前的值要做一个触发器,记录商品价格变化情况.item表(商品信息),和记录变化情况的pricechangecreateorreplacetriggerupdpriceafterupdateofpriceonitemforeachrowdeclare--localvariable
题目详情
oracle怎么获取更新前的值 要做一个触发器,记录商品价格变化情况.
item表(商品信息),和记录变化情况的price_change
create or replace trigger upd_price
after update of price on item
for each row
declare
-- local variables here
begin
for rec in(select itemNo,price from item where itemNo = :new.itemNo)
loop
insert into price_change(rec.itemNo,:old.price,:new.price,sysdate())
end loop;
end upd_price;
item表(商品信息),和记录变化情况的price_change
create or replace trigger upd_price
after update of price on item
for each row
declare
-- local variables here
begin
for rec in(select itemNo,price from item where itemNo = :new.itemNo)
loop
insert into price_change(rec.itemNo,:old.price,:new.price,sysdate())
end loop;
end upd_price;
▼优质解答
答案和解析
我猜你是遇到了表发生变化,触发器不能读的错误,原因是UPDATE和触发器处于同一事务中,此时UPDATE事务未结束,所以SELECT语句报错.解决办法就是去掉这一行!然后在INSERT这行里用:new.itemNo来代替rec.itemNo.另外,你这个是行级触发器,不需要loop(itemNo想必是表item的主键吧,即使用loop,因为where的条件限制,也只会返回一行).
所以实际你只需要这么写:
create or replace trigger upd_price
after update of price on item
for each row
declare
-- local variables here
begin
insert into price_change(itemNo,oldPrice,newPrice,changeTime) values(:new.itemNo,:old.price,:new.price,sysdate);
end upd_price;
/
所以实际你只需要这么写:
create or replace trigger upd_price
after update of price on item
for each row
declare
-- local variables here
begin
insert into price_change(itemNo,oldPrice,newPrice,changeTime) values(:new.itemNo,:old.price,:new.price,sysdate);
end upd_price;
/
看了 oracle怎么获取更新前的...的网友还看了以下:
数学F(t)=e^t-t-1,则F(t)的导数=e^t-1为什么t≠0时,F(t)>F(0)=0, 2020-05-23 …
求极限的值limInx-1/x-e,x趋近于e我知道令x-e=t=limIn(e+t)-Ine/t 2020-06-17 …
令文法G[E]为:E→T|E+T|E-TT→F|T*F|T/FF→(E)|i证明E+T*F是它的一 2020-07-08 …
|E-A|=|AA^T-A|=|A(A^T-E^T)|,其中A是转置矩阵,为什么这里E也要跟着转置 2020-07-09 …
参化普:x=t+1/t,y=t-1/t(t为参)第二个:x=e^t+e^-ty=2(e^t-e^- 2020-07-11 …
已知函数y=(e^x-a)^2+(e^(-x)-a)^2(a属于R,a不等于0),求y的最小值Y= 2020-07-21 …
这个微分方程怎么解!r(t)^2+3r(t)^1+2r(t)=e(t)^2+2e(t)^1+e(t 2020-07-23 …
写单词,这些单词打乱顺序了!:1.d,f,e,n,i,f,e,r,t,()2.g,h,o,e,t, 2020-07-26 …
关于参数方程的问题1.x=e^t+e^(-t)y=2(e^t-e^(-t))e=2.71828(t 2020-08-02 …
limt→0(1+1/t)^t=e证明因为limx→∞时(1+1/x)^x=e,令x=1/t,则当x 2020-12-27 …