Lệnh mua order_id = 27 đang PENDING và vừa được khớp toàn bộ ở giá của lệnh. Việc ghi nhận gồm 4 thao tác phải nguyên tử (tất cả hoặc không gì cả) nên đặt trong một transaction rồi COMMIT:
Orders: lệnh 27 status = 'MATCHED'.Trades: trade_id = 87, order_id = 27, symbol/quantity/price lấy từ chính lệnh 27 (dùng INSERT ... SELECT), trade_date = '2026-09-25'.balance của tài khoản đặt lệnh 27 đi quantity × price của lệnh.Portfolio.quantity của tài khoản đó, đúng mã của lệnh, thêm quantity của lệnh (tài khoản này đã nắm giữ mã đó).Mọi số liệu (tài khoản, mã, số lượng, giá) phải lấy từ dữ liệu của lệnh 27 bằng subquery/INSERT ... SELECT, không gõ cứng. Các lệnh, tài khoản và dòng danh mục khác không được đổi.
Đây là minh họa tính Atomicity và Consistency của ACID: nếu bước 3 thất bại mà bước 2 đã ghi, dữ liệu sẽ sai lệch — transaction ngăn điều đó.
Orders, Trades, Accounts, Portfolio.
(Chấm theo trạng thái dữ liệu: trạng thái lệnh 27, giao dịch 87, số dư tài khoản, danh mục và các tổng.)
Ví dụ:
Đầu vào:
Đầu ra:
MATCHED 87 VCS 200 60000.00 2026-09-25 55000000.00 300 87 66975000000.00 306000 70
Giải thích:
Đang tải editor...