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 6.4] ROLLBACK và COMMIT: thử xóa lệnh chờ khớp

    📖Cần ôn lý thuyết? Đọc bài giảng Buổi 6: Thay đổi dữ liệu: INSERT, UPDATE, DELETE — khóa SQL

    Thực hành cơ chế hoàn tác của transaction trên bảng Orders. Script của bạn gồm hai transaction liên tiếp:

    1. Transaction thử nghiệm: bắt đầu transaction, xóa toàn bộ lệnh status = 'PENDING', rồi ROLLBACK — dữ liệu phải trở về như cũ.
    2. Transaction thật: bắt đầu transaction mới, xóa các lệnh PENDING có order_date < '2026-09-01', rồi COMMIT.

    Kết quả cuối cùng: chỉ các lệnh PENDING cũ (trước 2026-09-01) bị xóa. (Lệnh PENDING không có giao dịch Trades đi kèm nên không vướng khóa ngoại.)

    • SQL Server: BEGIN TRANSACTION / ROLLBACK TRANSACTION / COMMIT TRANSACTION
    • MySQL: START TRANSACTION / ROLLBACK / COMMIT
    • Định dạng đầu vào:

      Orders(order_id, order_date, status).

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

      (Chấm theo trạng thái dữ liệu: tổng hợp Orders theo status.)

    Ví dụ:

    Đầu vào:

    Đầu ra:

    CANCELLED	17	1071
    MATCHED	69	4098
    PARTIAL	17	1037
    PENDING	9	509

    Giải thích:

    8 lệnh PENDING trước 2026-09-01 bị xóa thật (COMMIT); 9 lệnh PENDING còn lại được giữ nhờ ROLLBACK ở transaction thử nghiệm và điều kiện ngày.

    Chủ đề

    📊 SQLSQLSQL: Buổi 6 – INSERT, UPDATE, DELETETất cả môn học

    Đang tải editor...