Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cập nhật bảng khác sau khi chèn bằng cách sử dụng trình kích hoạt?

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




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL cách lấy tổng số ngày bắt đầu / ngày kết thúc với các ngày có thể trùng lặp

  2. xóa tệp bằng thủ tục MySQL

  3. Chọn các giá trị được nhóm thành một số nhận dạng cụ thể

  4. NHibernate MappingException:không có tài khoản cho byte []

  5. Lỗi ngẫu nhiên:# 1045 Không thể đăng nhập vào máy chủ MySQL