0

我有 2 张桌子:

  1. ORDERS - 存储我购物车中的所有信息
  2. 项目 - 商店 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 的触发器中时,我不断收到此消息:

处理您的请求时出现一个或多个错误:

以下查询失败:“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 回答