Nếu bạn không mong đợi một lượng lớn dữ liệu, hãy sử dụng một chế độ xem hoặc một quy trình được lưu trữ để tính toán nhanh và trả về số lượng thực tế. Nó có thể giúp bạn đỡ đau đầu về lâu dài.
Chế độ xem của bạn (thực tế là các chế độ xem) có thể giống như
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;
Khi chúng tôi làm
SELECT * FROM vw_table1;
sẽ nhận được
| ID | PRODUCT | QTY | ----------------------- | 1 | mouse | 8 | -- the quantity is current | 2 | keyboard | 15 | | 3 | monitor | 8 |
Đây là SQLFiddle bản demo
Bây giờ, nếu bạn vì lý do nào đó muốn quản lý số lượng hàng tồn kho của mình bằng trình kích hoạt, nó có thể trông giống như sau
CREATE TRIGGER tg_ai_table2
AFTER INSERT ON table2
FOR EACH ROW
UPDATE Table1
SET qty = qty - NEW.issued_qty
WHERE product = NEW.product;
Đây là SQLFiddle bản demo