Kiểm tra dữ liệu xem đã bị thay đổi trong database chưa

Mình có 1 vấn đề về java web như sau:

Mình có 1 màn hình [search], sau khi search ra kết quả thì kết quả sẽ hiển thị trên jqGrid, nếu mình chọn 1 hoặc 1 vài bản ghi (bằng cách check vào check box trên grid) rồi ấn nút [Đăng ký] thì dữ liệu của những bản ghi này sẽ chuyển qua màn hình [đăng ký hàng loạt]

Vấn đề xảy ra với mình là:

Khi mình chọn các bản ghi ở grid rồi để im ở màn hình [search] đấy 1h. Trong 1 tiếng đấy thì đã có người thay đổi nội dung của cái bản ghi mình đã chọn => làm nó không đủ điều kiện hiển thị nữa (nên sẽ ko thể truyền dữ liệu này qua màn đăng ký) => Nên khi ấn nút [Đăng ký] thay vì chuyển qua màn [đăng ký hàng loạt] nó sẽ hiện ra thông báo là dữ liệu đã bị thay đổi rồi sau đó load lại trang [search] này

Vậy anh em cho hỏi:
Có cách nào để check xem dữ liệu mà mình chọn đã bị thay đổi trong database hay chưa không

Mình có 2 giải pháp thế này:

  1. Mình sẽ có 1 vòng for để duyệt hết list các bản ghi mình đã chọn trên grid, sau đó mình thực hiện select lại theo key và so sánh xem bản ghi đã bị thay đổi hay chưa. Nếu bản ghi bị thay đổi mình sẽ break và in ra thông báo => Cách này thì chỉ cần chạy vòng for 1 lần nhưng lần nào cũng phải truy vẫn vào database (nếu số record mình chọn trên grid khoảng 1-2000 thì phải truy vấn đến 1-2000 lần vào DB)

  2. Mình sẽ select lại duy nhất 1 lần tất cả các bản ghi mình đã chọn trên grid dựa theo key của các bản ghi ấy. Rồi lưu cái đống mình select ra vào 1 List sau đó mình chạy 2 vòng for lồng nhau để kiểm tra xem bản ghi nào đã bị thay đổi => Cách này thì nếu có 1000 bản ghi thì mình phải chạy 1000*1000 vòng

Mình hiện tại chỉ nghĩ ra 2 cách như vậy nhưng mà mình nghĩ 2 cách này đều rất là tốn time.
Không biết các bạn có gợi ý gì giúp mình trong trường họp này không
Thanks & best regards !

Cái này thuộc về nghiệp vụ ngoài hệ thống rồi, tuỳ cái đăng kí của bạn là gì.

Ví dụ về Tiki, client tìm kiếm (search) với từ khoá “Introduction Algorithms” để mua sách CLRS. Trong khung kết quả trả về thì báo là có hàng. Client cho vào giỏ hàng và tiến hành thanh toán.

Phía Tiki, trong lúc xác nhận đơn hàng, phát hiện là trong kho không còn sách CLRS nữa, họ phải cập nhật lại database sang trạng thái hết hàng. Còn đơn hàng của khách xử lí thế nào? Tiki quyết định mua 1 quyển CLRS ở các online shop hoặc nhà sách khác, chấp nhận giá cao hơn. Quyển sách Tiki mua được vận chuyển đến khách. Khách không hề biết chuyện Tiki không có hàng.

Bên Nhân Văn thì xử lí khác. Họ gọi điện đến khách hàng nói hàng hiện tại không có, và anh/chị có nhu cầu đổi sách hay bỏ bớt sách thiếu khỏi đơn hàng hay không.

Bên 1 cửa hàng hợp tác Sendo thì hơi bựa tí, vẫn cho đặt hàng, nhưng không gọi điện hỏi khách hàng gì cả. Kẹp tiền dưới đáy thùng hàng rồi giao thiếu như thường. :joy:

8 Likes

uây vchh :)). Cảm ơn bạn nhiều nha, mình cũng hơi bất ngờ về cách xử lý của các hệ thống khác ^^. Mình có thử nghĩ để việc mình sẽ vẫn cho chuyển qua màn hình [đăng ký hàng loạt] nhưng sẽ thực hiện search lại ^^. nhưng kiểu nếu thế thì từ màn [search] mình chọn 1k bản ghi mà qua màn [đăng ký hàng loạt này] ng dùng lại chỉ thấy 999 bản ghi mà ko có thông báo nào nên chỉ sợ họ sẽ có thắc mắc ^^.
Cảm ơn bạn nhiều nhé ^^

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?