Tôi có lược đồ cơ sở dữ liệu cho một dự án tích hợp mà tôi cần để có thể truy vấn các bản ghi có thay đổi, nhưng chỉ dựa trên tập hợp các trường trong hồ sơ đó.Thực hiện băm bản ghi cơ sở dữ liệu để theo dõi xem bản ghi đã thay đổi hay không
Vì vậy, ví dụ, đây là một ví dụ bảng:
KHÁCH HÀNG
- ID
- Tên
- Điện thoại
- Fax
- Balance
Tôi cần truy vấn để tìm nạp các bản ghi có các trường Tên, Điện thoại hoặc Fax đã thay đổi. Tuy nhiên, không nên tính đến các trường khác, ví dụ: nếu chỉ trường Số dư thay đổi, truy vấn của tôi không được kéo bản ghi đó vào (do đó, trường dấu thời gian tự động cập nhật bất cứ khi nào bản ghi được sửa đổi không hoạt động).
Ngoài ra, điều này phải chạy trên một số cơ sở dữ liệu và nền tảng khác nhau, vì vậy TRIGGERS hoặc một cái gì đó tương tự không thực sự là một tùy chọn trừ khi chúng chạy trên MySQL, PostgreSQL, SQL Server và SQLLite.
Các trường được sửa đổi bởi ứng dụng của bên thứ ba mà tôi không thể sửa đổi, vì vậy tôi không thể thêm cờ và ứng dụng của bên thứ ba đặt cờ thành TRUE bất cứ khi nào nó sửa đổi trường có liên quan.
Giải pháp ban đầu của tôi là tính HASH của các trường liên quan và lưu trữ nó trong trường mới 'LastHash' hoặc thứ gì đó. Sau đó, tôi có thể tính toán giá trị băm của các trường liên quan cho dữ liệu hiện có trong bản ghi và nếu nó không khớp với LastHash được lưu trữ, tôi biết nó đã thay đổi.
Điều đó có vẻ khá lộn xộn ... nhưng có vẻ như nó sẽ hoạt động. Có cách nào tốt hơn? Nếu không, có cách nào tốt để thực hiện băm đó để nó có hiệu quả và không tốn quá nhiều thời gian để trích xuất các bản ghi đã thay đổi đó không?
EDIT
Một số làm rõ: Cả hai ứng dụng của tôi và bản cập nhật ứng dụng khác và chèn vào các bảng. Tôi có thể làm cho ứng dụng của tôi tính toán băm ban đầu. Tôi không thể làm cho các ứng dụng khác tính toán nó mặc dù.
Cột dấu thời gian tự động cập nhật bất cứ khi nào thay đổi bản ghi có thể thực hiện được, chúng đủ dễ dàng sao chép trong tất cả hệ thống cơ sở dữ liệu bằng các loại cột khác nhau hoặc trình kích hoạt rất đơn giản.
BỔ SUNG CÂU HỎI
Nếu băm là con đường để đi ... là có bất kỳ loại thuật toán băm hiệu quả đó sẽ không kéo dài mãi để tính toán trên tất cả các hồ sơ? MD5 hoặc SHA1 có thể hoạt động, nhưng có vẻ như chúng là sllloowwww.
Làm cách nào để bạn chèn/cập nhật băm mà không sử dụng trình kích hoạt hoặc sửa đổi ứng dụng thực hiện chèn? –
EDIT: Tôi có thể làm cho ứng dụng của tôi tính toán băm ban đầu. Tôi không thể làm cho các ứng dụng khác tính toán nó mặc dù. –