我有一个非常棘手的mysql触发器 - 我有3个表,机器,部件,用于... 机器有mname,价格...... 零件有pname,成本...... usedin用于存储用于构建机器的部件数量,因此有mname,pname,amount(机器中使用的部件数量)
现在我需要确保机器价格总是大于它所制造的所有零件的成本之和,使用触发器。换句话说,每次更新零件的成本时,如果价格低于该价格,则具有更新零件的机器的价格将自动计算为总和(成本*金额)。下面的触发器是我的第一次尝试。 然后我尝试将set price = new.cost替换为
从.....中选择总和(金额*成本)
我发现我很难将价格设定为总和(成本*金额),因为一旦找到更新的部件,就会有多台机器使用这些部件,同时他们使用其他部件,我有很难将它们加在一起并仍然将每台机器设置为它们各自的总和。我需要一个循环吗?怎么样?我是mysql的新手。
非常感谢任何帮助。提前谢谢。
create trigger setPrice after update on parts
for each row
begin
update machine m inner join usedin u inner join parts i
set price = new.cost
where price < new.cost*amount and c.cname = u.cname and u.iname = new.iname
;
end//