我试图创建触发器来计算乘积的总和,但它显示了编译错误


create or replace trigger total_amt
2  after insert or delete or update
3  on products
4  for each row
5  BEGIN
6  update products
7  SET products.total_prod_amt=(SELECT SUM(products.prod_price) FROM products
8  WHERE products.prod_id=products.prod_id
9  END;
10  /
Warning: Trigger created with compilation errors.

我正在尝试这个代码,它正确吗。我必须计算一下我桌子上所有产品的价格总和。

我添加了);来结束子查询和SQL查询。触发器现在可以正确编译
Oracle现在给出了不同的错误,因为触发器正试图修改正在变化的表。

create table products(
prod_id int primary key,
prod_price int not null,
total_prod_amt int  );
<blockquote\
create or replace trigger total_amt
after insert or delete or update
on products
for each row
BEGIN
update products
SET products.total_prod_amt= 
(SELECT SUM(products.prod_price) 
FROM products
WHERE products.prod_id=products.prod_id
);
END;
/
>
<blockquote\
select * from user_errors;
>
名称|类型|序列|行|位置|文本|属性|消息编号:---|:---|-------:|----:|-------::|---|:-------|--------------:
insert into products(prod_id, prod_price) values (1,10);
ORA-04091:表格FIDDLE_DRLOPQIBFBWCYUAPCXVV。产品正在变异,触发器/功能可能看不到它

ORA-06512:在";FIDDLE_DRLOPQIBFWCYUAPCXKVV。TOTAL_AMT";,第2行ORA-040088:执行触发器"FIDDLE_DRLOPQIBFBWCYUAPCXKVV"期间出错。TOTAL_AMT'

db<gt;小提琴这里

相关内容

最新更新