Phụ thuộc vào việc users
của bạn bảng là MyISAM hoặc InnoDB.
Nếu đó là MyISAM, một câu lệnh này hay câu lệnh kia có một khóa trên bảng và bạn có thể làm rất ít điều để kiểm soát điều đó, ngắn gọn là khóa bảng bản thân bạn.
Nếu đó là InnoDB, nó dựa trên giao dịch. Kiến trúc đa phiên bản cho phép truy cập đồng thời vào bảng và SELECT
sẽ thấy số hàng kể từ thời điểm bắt đầu giao dịch của nó. Nếu có INSERT
đang diễn ra đồng thời, SELECT
sẽ thấy 0 hàng. Trên thực tế, bạn thậm chí có thể thấy 0 hàng bằng SELECT
được thực hiện một vài giây sau đó, nếu giao dịch cho INSERT
vẫn chưa cam kết.
Không có cách nào để hai giao dịch bắt đầu thực sự đồng thời. Các giao dịch được đảm bảo sẽ có một số đơn đặt hàng.