我目前正在创建某种库存系统。
我在tbl1哪里保存项目。在中tbl1,我有一栏qty或剩余的可用库存。
tbl1
qty
tbl1:
id product qty 1 mouse 10 2 keyboard 15 3 monitor 8
我还有一个表tbl2,我将所有交易保存在该表中。在这张桌子上有issued_qty。
tbl2
issued_qty
id requested_by product issued_qty 1 john mouse 2
我的问题是如何tbl2在UPDATE的同时插入一行tbl1.qty (tbl1.qty - tbl2.issued_qty)。
tbl1.qty (tbl1.qty - tbl2.issued_qty)
例如:当我在tbl2request_by,product和qty_issued中插入记录时,我希望tbl1可以自动更新。因为我们向John发出了2(数量)的鼠标。tbl1中的鼠标记录应自动减少到“ no”。的发行数量tbl2
我的想法是使用 TRIGGER
TRIGGER
但不幸的是我没有成功..请你帮我这个忙..
谢谢。
如果您不希望有大量数据,请使用视图或存储过程即时计算并返回实际数量。从长远来看,这可能会减轻您的很多麻烦。
您的视图(实际上是视图)可能看起来像
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 |
这是 SQLFiddle 演示
现在,如果您出于某种原因想要使用触发器来管理库存数量,则可能看起来像这样
CREATE TRIGGER tg_ai_table2 AFTER INSERT ON table2 FOR EACH ROW UPDATE Table1 SET qty = qty - NEW.issued_qty WHERE product = NEW.product;