Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Oracle - Kích hoạt để tạo một hàng lịch sử khi cập nhật

Được rồi, đây là một bản viết lại. Điều tôi đã bỏ lỡ khi lần đầu tiên trả lời là ứng dụng đang lưu trữ Lịch sử của nó trong bảng chính. Giờ tôi đã hiểu tại sao @NickCraver lại rất hối lỗi về mã.

Điều đầu tiên cần làm là truy lùng thủ phạm của thiết kế này và đảm bảo rằng chúng sẽ không bao giờ tái phạm nữa. Lưu trữ lịch sử như thế này không mở rộng quy mô, làm cho các truy vấn bình thường (không lịch sử) trở nên phức tạp hơn và phá hoại tính toàn vẹn của mối quan hệ. Rõ ràng là có những trường hợp không có vấn đề nào trong số đó quan trọng và có lẽ trang web của bạn là một trong số đó, nhưng nói chung đây là một cách triển khai rất tệ.

Cách tốt nhất để thực hiện việc này là Oracle 11g Total Recall . Đó là một giải pháp thanh lịch, với cách triển khai hoàn toàn vô hình và hiệu quả, và - theo tiêu chuẩn của các tính năng bổ sung có tính phí khác của Oracle - có giá khá hợp lý.

Nhưng nếu Total Recall nằm ngoài câu hỏi và bạn thực sự phải làm điều này, thì không cho phép cập nhật . Thay đổi đối với bản ghi CONTACT hiện có phải là một phần chèn. Để thực hiện công việc này, bạn có thể cần phải xây dựng một dạng xem với bộ kích hoạt INSTEAD OF. Nó vẫn may mắn nhưng không hoàn toàn may mắn như những gì bạn có bây giờ.

Kể từ Oracle 11.2.0.4 Total Recall đã được đổi tên thành Lưu trữ Flashback và được bao gồm như một phần của Giấy phép Doanh nghiệp (mặc dù rút ngắn các bảng nhật ký nén trừ khi chúng tôi mua tùy chọn Nén nâng cao).

Điều này rất lớn từ Oracle nên làm cho FDA trở thành cách lưu trữ lịch sử bình thường:nó hiệu quả, nó hoạt động tốt, nó là một Oracle tích hợp sẵn với cú pháp tiêu chuẩn để hỗ trợ các truy vấn lịch sử. Than ôi, tôi mong đợi sẽ thấy các triển khai nửa vời với các trình kích hoạt được mã hóa, khóa chính bị hỏng và hiệu suất khủng khiếp trong nhiều năm. Bởi vì tạp chí dường như là một trong những thứ gây xao nhãng mà các nhà phát triển thích thú, mặc dù thực tế là hệ thống ống nước cấp thấp phần lớn không liên quan đến 99,99% tất cả các hoạt động kinh doanh.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thuật toán được sử dụng bởi hàm ORA_HASH là gì?

  2. Làm thế nào để lưu BLOB dưới dạng tệp trong PL / SQL?

  3. Tổng số đang chạy theo các bản ghi được nhóm trong bảng

  4. Làm cách nào để tính toán tuần trong năm trong Oracle bằng cách sử dụng ngày đầu tiên không chuẩn?

  5. Tại sao lựa chọn từ thủ tục được lưu trữ không được hỗ trợ trong cơ sở dữ liệu quan hệ?