Tôi không lập trình việc này, nhưng ở công ty cũ lập trình ERP nhiều người dùng (ít nhất là 50, nhiều là 200), thì có tình trạng như bên trên nói: Đồng thời 2 hoặc nhiều máy update hoặc insert vào database cùng lúc sinh ra trùng khoá và/ hoặc treo server.
Biện pháp tôi đưa ra là có 1 bảng chứa NextID của tất cả các bảng (cả mấy trăm hoặc lên đến cả ngàn), câu lệnh kề trên của câu lệnh insert phải đọc số hiện tại của NextID, rồi tăng NextID của bảng cần insert lên. Client khác đọc NextID sẽ thấy số mới
Đặc biệt là trường hợp import dữ liệu hàng loạt, thì phải book trước 1 số lượng ID bằng với số lượng record chuẩn bị import (n reccords), nghĩa là tăng NextID lên n chứ không phải lên 1.
Biện pháp tôi đưa ra là có 1 bảng chứa NextID của tất cả các bảng (cả mấy trăm hoặc lên đến cả ngàn), câu lệnh kề trên của câu lệnh insert phải đọc số hiện tại của NextID, rồi tăng NextID của bảng cần insert lên. Client khác đọc NextID sẽ thấy số mới
Đặc biệt là trường hợp import dữ liệu hàng loạt, thì phải book trước 1 số lượng ID bằng với số lượng record chuẩn bị import (n reccords), nghĩa là tăng NextID lên n chứ không phải lên 1.