1

我有一个非常棘手的 mysql 触发器 - 我有 3 个表,机器,部件,使用...机器有 mname,价格......部件有 pname,成本......使用是存储用于构建机器的部件的数量,所以有mname,pname,amount(一台机器使用的零件数量)

现在,我需要使用触发器确保机器价格始终高于其制造的所有部件的成本总和。换句话说,每次我更新一个零件的成本时,如果价格低于该价格,将自动计算更新零件的机器的价格为 sum(cost*amount)。下面的触发器是我的第一次尝试。然后我尝试将 set price = new.cost 替换为

从.....中选择总和(金额*成本)

我发现我很难将价格设置为 sum(cost*amount),因为一旦我找到更新的零件,就有多台机器在使用这些零件,同时它们在使用其他零件,我很难过将它们加在一起,仍然将每台机器设置为各自的总和。我需要在这里循环吗?如何?我对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//
4

0 回答 0