首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为两个表创建触发器,但得到错误消息

问为两个表创建触发器,但得到错误消息
EN

Stack Overflow用户
提问于 2013-11-09 11:36:51
回答 1查看 1.3K关注 0票数 0

我有两张桌子:

  1. 订单-储存我购物车上的所有信息
  2. 物品-库存id \ scode #产品价格\ saleprice \x库存

我已经在下面的触发器,当一个订单被插入到数据库‘订单’,我希望它更新‘库存’数量在‘项目表’中的-1。

代码语言:javascript
复制
CREATE TRIGGER `order_updater` AFTER INSERT ON `orders`
FOR EACH ROW UPDATE items
SET inventory = inventory - 1
WHERE id = new.id
END;

当我试图在phpMyAdmin中的触发器中添加它时,我一直收到以下消息:

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

以下查询失败:“为每一行在items上插入之前创建触发器order_updater,为每一行在orders上插入后创建触发器order_updater,为每一行更新项目设置库存=库存-1其中id = new.id结束;

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

  1. 这能用这个扳机做吗?
  2. 触发器将更新特定项或所有项吗?
  3. 是否可以将触发器添加到产品.htm页面,或者是否需要在phpMyAdmin中?

我不确定代码是否是正确的,因为我是新手,任何指针都将不胜感激。

*更新: phpMyAdmin :我从页面中复制了这个信息:版本信息: 4.0.8,最新稳定版本:

EN

回答 1

Stack Overflow用户

发布于 2013-11-09 11:43:10

试一试如下:

代码语言:javascript
复制
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,工作正常,没有问题。

​

​

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19875472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档