Jika Anda tidak mengharapkan data dalam jumlah besar, gunakan tampilan atau prosedur tersimpan untuk menghitung dengan cepat dan mengembalikan jumlah sebenarnya. Ini dapat menghemat banyak sakit kepala dalam jangka panjang.
Tampilan Anda (sebenarnya tampilan) mungkin terlihat seperti
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;
Saat kita melakukannya
SELECT * FROM vw_table1;
akan mendapatkan
| ID | PRODUCT | QTY | ----------------------- | 1 | mouse | 8 | -- the quantity is current | 2 | keyboard | 15 | | 3 | monitor | 8 |
Ini SQLFiddle demo
Sekarang jika Anda karena alasan tertentu ingin mengelola kuantitas inventaris Anda dengan pemicu, mungkin akan terlihat seperti ini
CREATE TRIGGER tg_ai_table2
AFTER INSERT ON table2
FOR EACH ROW
UPDATE Table1
SET qty = qty - NEW.issued_qty
WHERE product = NEW.product;
Ini SQLFiddle demo