Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi
    solution
    Đăng nhập
    Đăng nhập

    Đề bài: [SQL 9.3] Trigger AFTER UPDATE điều chỉnh CustomerStats (NEW/OLD)

    📖Cần ôn lý thuyết? Đọc bài giảng Buổi 9: Stored Procedure & Trigger (cơ bản) — khóa SQL

    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.

    • SQL Server: ghép 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.
    • MySQL: 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.

    • Định dạng đầu vào:

      Bảng Trades, Orders, Accounts, CustomerStats.

    • Định dạng đầu ra:

      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:

    KH2 có 2 giao dịch cùng bị tăng khối lượng (gộp delta); KH5 một giao dịch; KH36 đổi giá; giao dịch 1 chỉ đổi ngày nên không đổi.

    Chủ đề

    📊 SQLSQLSQL: Buổi 9 – Stored Procedure & TriggerTất cả môn học

    Đang tải editor...