0

私は2つのテーブルを持っています:

  1. 注文 - ショッピング カートのすべての情報を保存します
  2. ITEMS - 店舗 ID | スコア | 製品 | 価格 | 販売価格 | 在庫

以下のトリガーを思いつきました.「注文」のデータベースに注文が挿入されたときに、「アイテムテーブル」の「在庫」数量を-1で更新したいです。

CREATE TRIGGER `order_updater` AFTER INSERT ON `orders`
FOR EACH ROW UPDATE items
SET inventory = inventory - 1
WHERE id = new.id
END;

phpMyAdmin のトリガーに追加しようとすると、次のメッセージが表示され続けます。

リクエストの処理中に 1 つ以上のエラーが発生しました:

次のクエリは失敗しました: "CREATE TRIGGER orer_updateBEFORE INSERT ON itemsFOR EACH ROW CREATE TRIGGER order_updaterAFTER INSERT ON ordersFOR EACH ROW UPDATE items SET inventory = inventory - 1 WHERE id = new.id END;"

MySQL は次のように述べています#1303 - Can't create a TRIGGER from within another stored routine

  1. これは、このトリガーで実行できますか?
  2. トリガーは特定のアイテムまたはすべてのアイテムを更新しますか?
  3. 製品の .htm ページにトリガーを追加できますか、それとも phpMyAdmin に追加する必要がありますか?

私はこれが初めてなので、コードが完全に正しいかどうかはわかりません。ポインタをいただければ幸いです。


*更新: phpMyAdmin : 次のページからコピーしました:バージョン情報: 4.0.8、最新の安定バージョン: 4.0.9 *

4

1 に答える 1

0

次のようなものを試してください:

DELIMITER $$

CREATE TRIGGER `order_updater` AFTER INSERT ON `orders`
FOR EACH ROW
BEGIN
  UPDATE `items`
  SET `inventory` = `inventory` - 1
  WHERE `id` = new.`id`;
END$$

DELIMITER ;

アップデート

どのバージョンの phpMyAdmin を使用していますか? 次の例は、バージョン phpMyAdmin 4.1.0-beta2 を使用しており、問題なく動作します。

ここに画像の説明を入力

于 2013-11-09T11:43:10.190 に答える