私は非常にトリッキーな mysql トリガーを持っています - 私は 3 つのテーブル、マシン、パーツ、usedin を持っています... マシンには mname、価格があります... パーツには pname、コストがあります... usedin は、マシンを構築するために使用されるパーツの数を格納することです、つまり、mname、pname、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//