【发布时间】:2021-12-20 22:20:57
【问题描述】:
我编写了一个更新后触发器,只要金额列中的一个数字发生变化,它就会重新计算最后一列中所有行的百分比。请帮我摆脱变异错误。
| FRUITNAME | AMOUNT | PERC |
|---|---|---|
| Apples | 10 | null |
| Pears | 20 | null |
| Bananas | 6 | null |
| Orange | 10 | null |
| Pineapples | 4 | null |
create or replace trigger fruit_perc
after update of AMOUNT
ON FRUIT
FOR EACH ROW
DECLARE
TOTAL NUMBER;
BEGIN
FOR i IN (SELECT PERC, AMOUNT, SUM(amount) AS TOTAL FROM FRUIT group by PERC, AMOUNT)
LOOP
i.PERC := (i.AMOUNT/i.TOTAL) * 100;
INSERT INTO FRUIT(PERC) VALUES(i.PERC);
DBMS_OUTPUT.PUT_LINE(i.amount);
END LOOP;
END;
/
update FRUIT
set AMOUNT = 4
WHERE AMOUNT = 4;
/
【问题讨论】:
标签: sql oracle plsql triggers sql-update