Sql 更新未在Postgres触发器中应用条件
我有三张这样的桌子: 订单(产品id(外键)、人员id(外键)、订单数量) 产品(产品标识(主键)、价格) 零售商(人员id(主键),佣金) 我正试图创建一个触发器,在他帮助下下下的每一笔订单都会增加零售商的佣金 这是我的触发器代码。但它似乎有一个bug,每次插入都会更新Retailers表中的每一条记录(或导致Retailers表中错误结果的其他bug)Sql 更新未在Postgres触发器中应用条件,sql,database,postgresql,Sql,Database,Postgresql,我有三张这样的桌子: 订单(产品id(外键)、人员id(外键)、订单数量) 产品(产品标识(主键)、价格) 零售商(人员id(主键),佣金) 我正试图创建一个触发器,在他帮助下下下的每一笔订单都会增加零售商的佣金 这是我的触发器代码。但它似乎有一个bug,每次插入都会更新Retailers表中的每一条记录(或导致Retailers表中错误结果的其他bug) CREATE OR REPLACE FUNCTION update_commission() RETURNS TRIGGER AS $tab
CREATE OR REPLACE FUNCTION update_commission() RETURNS TRIGGER AS $table$
BEGIN
update "Retailers" rt
set commission = commission + (res.order_count * res.price * 0.005)
from
(select r.personnel_id, o.order_count, p.price from
"Orders" o left join "Retailers" r
on r.personnel_id = o.personnel_id
left join "Products" p
on o.product_id = p.product_id) as res
where NEW.personnel_id = res.personnel_id;
return NEW;
END;
$table$ LANGUAGE plpgsql;
CREATE TRIGGER new_order
AFTER INSERT
ON "Orders"
FOR EACH ROW
EXECUTE PROCEDURE update_commission();