我的IBMDB2数据库中有以下表格:
货号(PID ....等) CombosAndPromotions(CP_ID,CP_Price ......等) PriceSize(尺寸,价格) 销售(PID,CP_ID,大小,数量,Sales_Price)
我想创建一个触发器来自动计算Sales_Price的值。基本上
1 - 如果PID为空,则该值是CP_ID *数量的价格。
2-如果CP_ID为空,则Sales_Price的值是购买产品的大小的价格(价格取决于不在PID上的大小)*数量。
3 - 如果它们都不为null,那么Sales_Price的值等于前两个求和的总和。我尝试了以下SQL代码,但它不起作用。
create trigger calc_Price
after insert on sales
for every row mode db2sql
if CP_ID is null
update table Sales
set Price = (PriceSize.price)*Quantity
where Sales.size = PriceSize.size
if PID is null
update table Sales
set price = CombosAndPromotions.CP_price * quantity
where CombosAndPromotions.CP_ID = Sales.CP_ID
有人可以协助我如何纠正它,因为我没有使用sql的经验。 谢谢。
答案 0 :(得分:1)
自从我使用db / 2以来已经很长时间了,但是这样的事情可能有用:
create trigger calc_Price
after insert on sales
referencing new as n
for every row mode db2sql
begin atomic
declare cpprice int;
if n.CP_ID is null then
update table Sales
set Price = (n.price) * n.Quantity
where PID = n.PID
end if;
if n.PID is null then
set cpprice = (select CP_price from CombosAndPromotions where CP_ID = n.CP_ID)
update table Sales
set price = cpprice * n.quantity
where PID = n.PID
end if;
end
想法是引用新插入的行(此处为n
)并使用该行中的键来更新表。 (这可能比插入前更好..?)