Giao dịch đôi khi được điều chỉnh (sửa khối lượng/giá sau đối soát). Tạo trigger trg_Trades_AfterUpdate trên Trades, kích hoạt sau khi UPDATE:
với mỗi giao dịch bị sửa, cộng vào CustomerStats.total_trade_value của khách hàng sở hữu phần chênh lệch (quantity_mới * price_mới) - (quantity_cũ * price_cũ).
trade_count không đổi. Sửa cột khác (vd trade_date) cho chênh lệch bằng 0 nên không làm đổi số liệu. Giả định order_id của giao dịch không bị sửa.
inserted (mới) với deleted (cũ) theo trade_id; phải gom theo khách hàng vì một câu UPDATE có thể sửa nhiều giao dịch cùng một khách hàng.FOR EACH ROW, dùng NEW. và OLD..Hệ thống chấm chạy 3 câu UPDATE trên Trades rồi in customer_id, total_trade_value, trade_count của mọi khách hàng có trade_count > 0.
Bảng Trades, Orders, Accounts, CustomerStats.
customer_id, total_trade_value, trade_count (TAB), sắp theo customer_id.
Ví dụ:
Đầu vào:
Đầu ra:
2 55600000.00 4
5 223150000.00 5
6 150250000.00 3
8 19350000.00 2
11 45000000.00 1
12 116800000.00 3
14 5050000.00 1
16 703300000.00 6
17 48000000.00 1
18 9750000.00 1
19 13250000.00 1
20 25350000.00 2
22 420525000.00 7
23 106150000.00 3
24 75250000.00 3
25 50800000.00 4
26 101500000.00 2
27 186000000.00 1
29 4250000.00 1
30 127450000.00 4
31 25800000.00 3
32 204650000.00 5
33 31750000.00 3
35 256600000.00 4
36 422600000.00 4
37 195500000.00 3
38 151950000.00 6
39 100250000.00 3
Giải thích:
Đang tải editor...