2

私はMYSQLのトリガーに比較的慣れていないので、これが私がしようとしている非常に基本的なことである場合は申し訳ありません. 静的更新を許可するように設定する方法を見つけましたが、初期更新のフィールドの1つをトリガーステートメント内の変数として使用する方法については何も見ていません

例:

表 1 items:

id | name | total_stock
1 | item | 8
2 | item2 | 0

表 2 item_options:

id | item_id | option | stock
1 | 1 | test | 5
2 | 1 | test2 | 3
3 | 2 | test | 0

次に更新するとitem_options

UPDATE `item_options` SET `stock`=7 WHERE `id`=1

または、新しい項目を に挿入しますitem_options:

INSERT INTO `item_options` (`item_id`,`option`,`stock`) VALUES ('2','add','2')

total_stock次に、(可能であれば) トリガーを使用して、テーブル内の を同じ対応するテーブル内itemsの SUM で更新したいと思います。stockitem_optionsitem_id

だから、私の質問は2つの部分に分かれていると思います:

  1. これは可能ですか?
  2. 誰かがこれを行う方法の正しい方向に私を向けることができますか?
4

1 に答える 1

2

ここで説明されているように、疑似行newまたはoldを使用できます。

次の行に沿ったものにする必要があります。

CREATE
TRIGGER my_trigger after insert, update
ON item_options FOR EACH ROW 
BEGIN
    update items set total_stock = (select sum(stock) from item_options where item_id = new.item_id) where item_id = new.item_id;
END;

私はそれをテストしていないことに注意してください、しかしそれはあなたに一般的な考えを与えるはずです.

于 2012-07-04T09:49:17.623 に答える