Bạn sẽ không thể thực hiện chỉnh sửa chính xác bằng SQL. Bạn cần một thuật toán như Unix diff
trên các tệp (hoạt động ở cấp độ dòng). Ở cấp độ ký tự, thuật toán sẽ là một số biến thể của Khoảng cách Levenshtein
. Nếu diff
đáp ứng nhu cầu của bạn, bạn có thể tải xuống, viết một thủ tục được lưu trữ để gọi nó, và sau đó sử dụng nó trong cơ sở dữ liệu. Điều này sẽ khá tốn kém.
Phần câu hỏi của bạn về việc duy trì các phiên bản khác nhau dễ dàng hơn nhiều. Tôi sẽ thêm hai colmnns EffDate
và EndDate
vào mỗi bản ghi. Bạn có thể tải phiên bản mới nhất bằng cách tìm EndDate is NULL
và tìm phiên bản đang hoạt động tại bất kỳ thời điểm nào. Merge
thường hữu ích để duy trì một bảng như vậy.