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

Kích hoạt các lựa chọn thay thế cho hai bảng phải cập nhật lẫn nhau

Sử dụng trình kích hoạt ở đây chỉ là một rắc rối.

Hơn nữa, lựa chọn sử dụng bộ lập lịch có lẽ không phải là ý tưởng tốt nhất vì các công việc được lên lịch chỉ có thể xem dữ liệu đã cam kết. Vì vậy, bạn đang cam kết trong trình kích hoạt đưa logic giao dịch ra khỏi cửa sổ hoặc các thay đổi đối với bảng bị trì hoãn cho đến khi kết thúc giao dịch.

Bạn nên:

  1. Các thủ tục sử dụng. Câu trả lời đơn giản nhất. Khi bạn có nhiều ứng dụng, chúng không nên thực hiện logic DML / businees trực tiếp, chúng phải luôn làm điều đó với các thủ tục để tất cả chúng chạy cùng một mã. Cấm DML trực tiếp với các khoản tài trợ hoặc lượt xem. Bạn có thể cần phải buộc sử dụng các thủ tục thông qua INSTEAD OF kích hoạt các lượt xem (chỉ xem xét điều này nếu bạn không thể sửa đổi ứng dụng).

  2. Có thể còn tốt hơn các thủ tục trong trường hợp của bạn:sử dụng lược đồ không chứa dữ liệu trùng lặp. Bạn không muốn lưu trữ dữ liệu dư thừa:điều này làm cho việc phát triển ứng dụng trở nên phức tạp hơn mức cần thiết. Về hiệu suất, nguồn lực và năng lượng, cách tốt nhất để giải quyết vấn đề là khi bạn nhận ra rằng nhiệm vụ đó là không cần thiết.

    Từ mô tả về mô hình của bạn, đây là các cột mà bạn có thể xóa:

    • task.duration_in_days
    • task.end_date
    • task.needs_recomputation
    • subtask.start_date
    • subtask.end_date


    task bảng sẽ chỉ chứa ngày bắt đầu và mỗi nhiệm vụ con sẽ chỉ lưu trữ thời lượng của nó. Khi bạn cần thông tin tổng hợp, hãy sử dụng các phép nối. Bạn có thể sử dụng các chế độ xem để cho phép các ứng dụng truy cập dữ liệu một cách minh bạch.

  3. Sử dụng giải pháp thay đổi trình kích hoạt sử dụng các biến gói để xác định các hàng đã sửa đổi với BEFOREAFTER trình kích hoạt câu lệnh. Rõ ràng là điều này sẽ liên quan đến rất nhiều mã sẽ khó viết, kiểm tra và bảo trì, vì vậy bạn nên sử dụng các tùy chọn (1) và (2) bất cứ khi nào có thể.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để chuyển đổi CLOB sang BLOB trong Oracle?

  2. Tìm nạp loại bảng Oracle từ thủ tục được lưu trữ bằng JDBC

  3. Lỗi Oracle PLS-00323:chương trình con hoặc con trỏ được khai báo trong đặc tả gói và phải được định nghĩa trong phần thân gói

  4. Không tìm thấy lớp Trình điều khiển JDBC:oracle.jdbc.OracleDriver

  5. Nhận đầu ra RefCursor và VarChar từ cùng một quy trình được lưu trữ