【问题标题】:Mysql Trigger - Update table when insert another tableMysql Trigger - 插入另一个表时更新表
【发布时间】:2019-07-29 07:19:15
【问题描述】:

我有三张桌子:

导入表:

import_id  | import_date
-------------------------
   1       | 2019/07/29
   2       | 2019/07/28

ImportItem 表:

import_id    |  product_id |  quantity
-------------------------------------
    1        |     1       |   50
    1        |     2       |   60
    1        |     3       |   20

产品表:

product_id   |  quantity   
---------------------------
    1        |     10       
    2        |     5       
    3        |     15      

我想在插入 ImportItem 表时在 product 表中创建一个触发器更新数量。

非常感谢任何帮助!非常感谢!

【问题讨论】:

  • 你的问题是什么?你有错误吗?如果是,请添加该消息并在收到消息时添加(例如,当您插入或尝试创建触发器时)。或者它不起作用/有什么意外吗?然后描述一下。

标签: mysql triggers


【解决方案1】:

如果您在表 import_item 中创建一个触发器,该触发器将在每个 import_item INSERT 之后更新您的表 product,您可以这样做:

CREATE TRIGGER trigger_name
AFTER INSERT
ON import_item FOR EACH ROW
BEGIN
    UPDATE product SET quantity = NEW.quantity WHERE product_id = NEW.product_id;
END

这里是一些关于触发关键字NEW和OLD的文档:documentation

当您处于BEFORE/AFTER INSERT 触发器中时,您可以使用NEW.field 来获取您刚刚插入的新字段的值。

现在,如果您在BEFORE/AFTER UPDATE 触发器中,您可以使用NEW.field 获取更新后的字段值,使用OLD.value 获取更新前的字段值。

最后,如果您在 BEFORE/AFTER DELETE 触发器中,您可以使用 OLD.field 获取删除前字段的值。

这是你要找的吗?

【讨论】:

  • 太棒了。这就是我需要的。非常感谢!
猜你喜欢
  • 2018-10-08
  • 1970-01-01
  • 1970-01-01
  • 2021-02-04
  • 2012-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-15
相关资源
最近更新 更多