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

Sử dụng các giao dịch lồng nhau trong oracle

Oracle không hỗ trợ các giao dịch lồng nhau. Nếu một giao dịch cam kết, nó sẽ cam kết. Đó là lý do tại sao bạn thường không muốn cam kết (hoặc khôi phục) một giao dịch trong một thủ tục được lưu trữ, điều này gây khó khăn cho việc sử dụng lại thủ tục ở nơi khác nếu ngữ nghĩa giao dịch của bạn khác nhau.

Tuy nhiên, bạn có thể khai báo một điểm lưu ở đầu quy trình của mình và quay trở lại điểm lưu đó trong trường hợp có lỗi. Sau đó, nếu bạn xóa cam kết, thì giao dịch chỉ được kiểm soát bởi mã ứng dụng chứ không phải mã cơ sở dữ liệu

begin
  savepoint beginning_of_proc;

  insert/update/delete...

exception 
  when OTHERS then 
    rollback to beginning_of_proc;
    raise;
end;

Tuy nhiên, trong trường hợp này, thành kiến ​​của tôi sẽ là không có điểm lưu trong mã, không có khôi phục và không bắt được ngoại lệ trừ khi bạn đang làm điều gì đó hữu ích với nó. Chỉ cần thực hiện DML, để mọi ngoại lệ được đưa ra và xử lý chúng trong ứng dụng của bạ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. Màn hình thay đổi bảng Oracle

  2. Bỏ người dùng được kết nối trong cơ sở dữ liệu Oracle

  3. Làm thế nào để tìm được nhân viên có mức lương cao thứ hai?

  4. Hướng dẫn sql Oracle:Hạn chế tập dữ liệu

  5. SQL Server:làm thế nào để bắt chước truy vấn oracle keep secure_rank?