Khóa lạc quan.
Tính bi quan khó thực hiện hơn và sẽ gây ra các vấn đề trong môi trường web. Hành động nào sẽ giải phóng khóa, đóng trình duyệt? Rời khỏi phiên để thời gian ra? Còn nếu họ lưu các thay đổi của họ thì sao?
Bạn không chỉ định cơ sở dữ liệu nào bạn đang sử dụng. Máy chủ MS SQL có kiểu dữ liệu dấu thời gian. Nó không có gì để làm với thời gian mặc dù. Nó là mearly một số sẽ được thay đổi mỗi khi hàng được cập nhật. Bạn không phải làm bất cứ điều gì để đảm bảo nó được thay đổi, bạn chỉ cần kiểm tra nó. Bạn có thể đạt được tương tự bằng cách sử dụng ngày/giờ được sửa đổi lần cuối vì @KM đề xuất. Nhưng điều này có nghĩa là bạn phải nhớ thay đổi nó mỗi khi bạn cập nhật hàng. Nếu bạn sử dụng datetime, bạn cần sử dụng kiểu dữ liệu với độ chính xác đủ để đảm bảo rằng bạn không thể kết thúc với giá trị không thay đổi khi cần. Ví dụ, một số tiết kiệm một hàng, sau đó ai đó đọc nó, sau đó lưu khác xảy ra nhưng để lại ngày/thời gian sửa đổi không thay đổi. Tôi sẽ sử dụng dấu thời gian trừ khi có yêu cầu theo dõi ngày sửa đổi cuối cùng trên hồ sơ.
Để kiểm tra xem bạn có thể làm như @KM đề xuất và đưa nó vào câu lệnh cập nhật ở đâu. Hoặc bạn có thể bắt đầu một giao dịch, kiểm tra dấu thời gian, nếu tất cả là tốt làm việc cập nhật, sau đó cam kết giao dịch, nếu không thì trả về một mã lỗi hoặc lỗi.
Mở giao dịch mở (theo đề xuất của @le dorfier) tương tự như khóa bi quan, nhưng lượng dữ liệu bị khóa có thể nhiều hơn một hàng. Hầu hết khóa của RDBM ở cấp trang theo mặc định.Bạn cũng sẽ chạy vào các vấn đề tương tự như với khóa bi quan.
Bạn đề cập đến trong câu hỏi của mình rằng bạn đang lo lắng về các cập nhật xung đột. Đó là những gì khóa sẽ ngăn chặn chắc chắn. Cả hai lạc quan hoặc bi quan sẽ, khi thực hiện đúng cách ngăn chặn chính xác điều đó.
Tôi thích ngày thay đổi cuối cùng tốt hơn loại dữ liệu dấu thời gian vì nó chứa dữ liệu hữu ích. Chúng tôi cũng có LastChgID để theo dõi người đó, cả hai cột này đều đẹp để hiển thị, trong đó cột loại dữ liệu dấu thời gian là vô nghĩa để hiển thị. –
Nếu loại dữ liệu này đã là một yêu cầu thì không có lý do gì để không sử dụng nó. Tôi đã cập nhật câu trả lời của mình cho phù hợp. – pipTheGeek