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

pragma self_transaction trong một trình kích hoạt

Sử dụng một giao dịch tự trị cho bất kỳ điều gì khác ngoài việc ghi nhật ký mà bạn muốn được lưu giữ khi giao dịch mẹ quay trở lại gần như chắc chắn là một lỗi. Đây không phải là cách sử dụng tốt một giao dịch tự trị.

Điều gì xảy ra, chẳng hạn, nếu tôi cập nhật một hàng trong t1 nhưng giao dịch của tôi quay trở lại. t2 các thay đổi đã được thực hiện và cam kết để chúng không quay trở lại. Điều đó thường có nghĩa là t2 dữ liệu hiện không chính xác. Toàn bộ điểm của giao dịch là đảm bảo rằng một tập hợp các thay đổi là nguyên tử và hoàn toàn thành công hoặc hoàn toàn hoàn toàn. Cho phép mã thành công một phần hầu như không bao giờ là một ý tưởng hay.

Tôi rất khó để biết việc sử dụng giao dịch tự động mua được gì cho bạn ở đây. Bạn sẽ thường thấy mọi người sử dụng không chính xác các giao dịch tự quản để khắc phục các lỗi kích hoạt thay đổi một cách không chính xác. Nhưng mã bạn đã đăng sẽ không tạo ra lỗi kích hoạt thay đổi trừ khi có trình kích hoạt cấp hàng trên t2 cũng đang cố cập nhật t1 hoặc một số cơ chế tương tự đang giới thiệu một bảng đột biến. Tuy nhiên, nếu đúng như vậy, việc sử dụng giao dịch tự trị nói chung thậm chí còn tồi tệ hơn vì giao dịch tự trị sau đó không thể thấy các thay đổi được thực hiện trong giao dịch mẹ, điều này gần như chắc chắn khiến mã hoạt động khác với bạn mong muốn.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL - Nhận các bản ghi bổ sung ngoài các bản ghi được lọc trong điều kiện

  2. Các phương pháp hay nhất để giữ mật khẩu trong tập lệnh shell / Perl?

  3. Thực thi câu lệnh sql động thành SYS_REFCURSOR

  4. Cách xuất dữ liệu trường clob trong nhà phát triển sql oracle

  5. Visual Studio 2012 Load testing có thể chụp bộ đếm hiệu suất của máy chủ Linux và cơ sở dữ liệu Oracle không?