为两个表创建TRIGGER但收到错误消息

时间:2013-11-09 11:36:51

标签: mysql triggers phpmyadmin

我有两张桌子:

  1. ORDERS - 存储购物车中的所有信息
  2. ITEMS - 存储ID | scode |产品|价格| saleprice |库存
  3. 我已经提出了下面的触发器,当订单在'orders'中插入数据库时​​,我希望它在'items table'中将'inventory'数量更新为-1。

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

    当我尝试在phpMyAdmin中的触发器中添加它时,我不断收到此消息:

    处理您的请求时发生了一个或多个错误:

    以下查询失败:“创建触发器orer_update在插入items之前为每个行创建触发器order_updater在插入orders之后为每个行更新项目设置清单= inventory - 1 WHERE id = new.id END;“

    MySQL说:#1303 - Can't create a TRIGGER from within another stored routine

    1. 这可以通过此触发器完成吗?
    2. 触发器会更新特定项目还是所有项目?
    3. 可以将触发器添加到产品.htm页面还是需要在phpMyAdmin中?
    4. 我不确定代码是否正确,因为我是新手,任何指针都会受到赞赏。


      *的 更新: phpMyAdmin:我从页面上复制了它:版本信息:4.0.8,最新稳定版本:4.0.9 *

1 个答案:

答案 0 :(得分: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,没有问题。

enter image description here