我正在创建某种库存系统。
我把东西放在哪里了。在tbl1中,我有tbl1列或剩余的可用库存。
待定1:

id product  qty
1  mouse    10
2  keyboard 15
3  monitor  8

我还有一个qty表,其中保存了发出项目中的所有事务。在这个表中有tbl2
tbl2级
id requested_by product  issued_qty
1  john         mouse    2

我的问题是如何在更新issued_qty的同时向tbl2插入一行。
例如:
当我在“申请者”、“产品”和“发出数量”中的“抄送”中插入记录时,我希望自动更新“抄送”。因为我们给约翰发了两个鼠标。鼠标在tbl1中的记录,应自动小于tbl1.qty (tbl1.qty - tbl2.issued_qty)中的发出数量
我的想法是使用tbl2
但不幸的是我没有成功。。你能帮我做这个吗。。
谢谢。

最佳答案

如果不希望有大量数据,请使用视图或存储过程动态计算并返回实际数量。从长远来看,这可能会让你省去很多头痛。
您的视图(实际上是视图)可能看起来像

CREATE VIEW vw_table2_sum AS
SELECT product, SUM(issued_qty) qty
  FROM Table2
 GROUP BY product;

CREATE VIEW vw_table1 AS
SELECT t.id, t.product, t.qty - COALESCE(v.qty, 0) qty
  FROM Table1 t LEFT JOIN vw_table2_sum v
    ON t.product = v.product;

当我们这样做的时候
SELECT * FROM vw_table1;

会得到
| ID |  PRODUCT | QTY |
-----------------------
|  1 |    mouse |   8 | -- the quantity is current
|  2 | keyboard |  15 |
|  3 |  monitor |   8 |

Here is SQLFiddle demo

Now if you for some reason want to manage your inventory quantity with a trigger it might look like this

CREATE TRIGGER tg_ai_table2
AFTER INSERT ON table2
FOR EACH ROW
  UPDATE Table1
     SET qty = qty - NEW.issued_qty
   WHERE product = NEW.product;

这里是SQLFiddle演示

关于mysql - 使用触发器插入后更新另一个表?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18264992/

10-11 03:38