pl sql触发总计

时间:2017-11-29 19:13:24

标签: sql plsql triggers

我想创建一个触发器来计算插入SALESORDERDETAIL的每一行的小计。小计是数量*价格。有人可以帮我理解如何解决这个问题吗?

我相信所有必要的信息都在SALESORDERDETAIL中。我之前使用了一个触发器和一个序列,但我还没有使用触发器。我每次都需要程序和执行吗?我该怎么写?任何帮助都是值得赞赏的,因为我在最后一天一直坚持这一点。谢谢!

{{1}}

1 个答案:

答案 0 :(得分:1)

假设这是Oracle?如果是这样,请考虑使用虚拟列而不是触发器:


...
subtotal     AS (soquantity * price),
...

...但是如果你还想要一个触发器,它看起来会像这样:

CREATE OR REPLACE TRIGGER SALESORDERDETAIL_before
BEFORE INSERT OR UPDATE
 ON SALESORDERDETAIL
 FOR EACH ROW
BEGIN
 :new.subtotal := :new.soquantity * :new.price;
END;
/

CREATE OR REPLACE TRIGGER SALESORDERDETAIL_before BEFORE INSERT OR UPDATE ON SALESORDERDETAIL FOR EACH ROW BEGIN :new.subtotal := :new.soquantity * :new.price; END; /

我不是不太优雅的解决方案的粉丝,但看起来像是用于教育,而不是解决问题,所以祝你好运。