Chúng tôi đang triển khai Hệ thống mới bằng cách sử dụng Java/Spring/Hibernate trên PostgreSQL. Hệ thống này cần tạo bản sao của mỗi bản ghi ngay sau khi sửa đổi/xóa được thực hiện trên (các) bản ghi trong (các) bảng. Sau đó, (các) Bảng Kiểm tra sẽ được truy vấn bởi Báo cáo để hiển thị dữ liệu cho người dùng.Cách triển khai Kiểm tra/phiên bản Bảng Sửa đổi trên PostgreSQL
Tôi đã lên kế hoạch triển khai tính năng kiểm tra/phiên bản này bằng cách kích hoạt (các) bảng sẽ tạo bản sao của hàng đã sửa đổi (hàng đã xóa) "TO" BẢNG có tên ENTITY_VERSIONS có khoảng 20 cột được gọi là col1, col2, col3, col4, vv sẽ lưu trữ các cột từ Bảng trên; Tuy nhiên, vấn đề là nếu có nhiều hơn 1 Bảng được phiên bản và CHỈ 1 bảng TARGET (ENTITY_VERSIONS) để lưu trữ tất cả các phiên bản của bảng, làm cách nào để thiết kế bảng TARGET?
HOẶC có tốt hơn là sẽ có COPY của Bảng VERSION cho mỗi Bảng cần phiên bản không?
Nó sẽ là tiền thưởng nếu một số gợi ý hướng tới PostgreSQL Triggers (và thủ tục lưu trữ liên quan) mã để thực hiện kiểm toán/phiên bản có thể được chia sẻ.
P.S: Tôi đã xem số Suggestions for implementing audit tables in SQL Server? và giống như câu trả lời, ngoại trừ tôi KHÔNG biết loại OldValue và NewValue là gì?
P.P.S: Nếu các bảng sử dụng xóa DELETE (phantom deletes) thay vì xóa HARD, bạn có thực hiện bất kỳ lời khuyên nào thay đổi không?
+1 cảm ơn. Tôi tự hỏi những điểm mạnh của việc có "BẢNG KIỂM TOÁN TOÀN CẦU" so với "Bảng Kiểm toán cho mỗi Bảng" là truy vấn dữ liệu để báo cáo? – anjanb
Nếu bạn bằng cách nào đó quản lý để có một bảng kiểm toán TOÀN CẦU, tôi thấy trước ALOT của loại đúc. Ý tôi là ... bạn sẽ lưu trữ tất cả các cột trong loại nào? – rfusca
rfusca: đúng. vâng, đó cũng là nghi ngờ của tôi! – anjanb