我的数据库中有 2 个表:purchase_order 和purchase_order_details。
purchase_order
有一列max_amount
代表可以按该顺序花费的总金额,并且purchase_order_details
有item_id
和price
,在保存之前必须满足此条件max_amount<sum(price)
。
我需要的是计算旧的总和,添加新插入的总和并验证它是否小于允许的最大金额。
所以我写了这个pl/sql验证函数
DECLARE
mx_amount number;
sum_prices number;
BEGIN
select max_amount into mx_amount from purchase_order where id=:P11_ID;
select sum(price) into sum_prices from purchase_order_details where order_id=:P11_ID;
IF mx_amount<=sum_prices then return true;
else return false;
END IF;
END;
这段代码的问题是新插入的值不在数据库中,所以它总是返回 true 并且我不知道如何引用 IG 数据来执行类似的操作:
DECLARE
NEW_PRICES number;
BEGIN
select sum(:price) into NEW_PRICES from dual;
其中
:price
是每行的 IG 价格列。
那么我如何计算旧的总和,添加新插入的总和并验证它是否小于允许的最大金额。
GRID 的主键是什么? 是同一列,即 ID 或订单 id 吗?