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 cập nhật CustomerStats khi thêm giao dịch

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

    Tạo trigger trg_Trades_AfterInsert trên bảng Trades, kích hoạt sau khi INSERT (AFTER INSERT). Với mỗi giao dịch mới, tìm khách hàng sở hữu giao dịch (qua Orders.order_id → Orders.account_id → Accounts.customer_id) rồi cập nhật CustomerStats của khách hàng đó:

    • total_trade_value tăng thêm quantity * price của giao dịch;
    • trade_count tăng thêm 1.

    Lưu ý SQL Server: trigger chạy một lần cho cả câu lệnh (dù chèn nhiều dòng) và dùng bảng ảo inserted — phải xử lý tập nhiều dòng, kể cả nhiều giao dịch cùng một khách hàng trong cùng câu INSERT. MySQL: trigger FOR EACH ROW, dùng NEW.cột. (SQL Server không có BEFORE trigger — bài này dùng AFTER ở cả hai.)

    Hệ thống chấm chèn 3 giao dịch (2 giao dịch thuộc cùng một khách hàng) 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	51800000.00	4
    5	220400000.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	430725000.00	9
    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
    40	27000000.00	1

    Giải thích:

    Đơn 3 thuộc KH22 (2 giao dịch: 9.000.000 + 1.200.000); đơn 7 thuộc KH40 (27.000.000).

    Chủ đề

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

    Đang tải editor...