Phiên bản được hỗ trợ:hiện tại(17)16 / 15 / 14 / 13
Phiên bản phát triển:Devel
Phiên bản không được hỗ trợ:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1
Tài kèo bóng đá việt nam này dành cho phiên bản không được hỗ trợ của PostgreSQL.
Bạn có thể muốn xem cùng một trang chohiện tạiPhiên bản hoặc một trong kèo bóng đá việt nam phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

46.8. SubtransActions rõ kèo bóng đá việt nam

Khôi phục từ kèo bóng đá việt nam lỗi gây ra bởi truy cập cơ sở dữ liệu như được mô tả trongPhần 46.7.2có thể dẫn đến một tình huống không mong muốn trong đó một số hoạt động thành công trước khi một trong số chúng thất bại và sau khi khôi phục lỗi đó, dữ liệu bị bỏ lại ở trạng thái không nhất quán. PL/Python cung cấp một giải pháp cho vấn đề này dưới dạng các phép trừ rõ kèo bóng đá việt nam.

46.8.1. Trình quản lý bối cảnh phụ

Hãy xem xét một chức năng thực hiện chuyển đổi giữa hai tài khoản:

Tạo chức năng Transfer_funds () trả về void dưới dạng $$

Nếu thứ haiCập nhậtBáo cáo dẫn đến một ngoại lệ được nêu ra, chức năng này sẽ báo cáo lỗi, nhưng kết quả của lần đầu tiênCập nhậtTuy nhiên, sẽ được cam kết. Nói cách khác, kèo bóng đá việt nam khoản tiền sẽ được rút khỏi tài khoản của Joe, nhưng sẽ không được chuyển vào tài khoản của Mary.

Để tránh kèo bóng đá việt nam vấn đề như vậy, bạn có thể bọcplpy.executegọi trong một phép trừ rõ kèo bóng đá việt nam. TheplpyMô -đun cung cấp một đối tượng trợ giúp để quản lý các phép trừ rõ kèo bóng đá việt nam được tạo bằngplpy.subtransaction ()Hàm. kèo bóng đá việt nam đối tượng được tạo bởi chức năng này thực hiệnGiao diện Trình quản lý bối cảnh. Sử dụng các phép trừ rõ kèo bóng đá việt nam, chúng tôi có thể viết lại chức năng của mình như:

Tạo chức năng Transfer_funds2 () trả về void dưới dạng $$

Lưu ý rằng việc sử dụngthử/bắtvẫn được yêu cầu. Nếu không, ngoại lệ sẽ lan truyền lên đỉnh của ngăn xếp Python và sẽ khiến toàn bộ chức năng hủy bỏ vớiPostgreSQLLỗi, đểHoạt độngBảng sẽ không có bất kỳ hàng nào được chèn vào nó. Trình quản lý ngữ cảnh Subtransaction không bẫy kèo bóng đá việt nam lỗi, nó chỉ đảm bảo rằng tất cả kèo bóng đá việt nam hoạt động cơ sở dữ liệu được thực thi trong phạm vi của nó sẽ được cam kết nguyên tử hoặc quay lại.

46.8.2. Phiên bản Python cũ hơn

Cú pháp của người quản lý ngữ cảnh bằng cách sử dụngvớiTừ khóa có sẵn theo mặc định trong Python 2.6. Nếu sử dụng PL/Python với phiên bản Python cũ hơn, vẫn có thể sử dụng các phép trừ rõ kèo bóng đá việt nam, mặc dù không minh bạch.__enter____exit__kèo bóng đá việt nam chức năng bằng cách sử dụngEnterThoátBí danh tiện lợi. Hàm ví dụ chuyển tiền có thể được viết là:

Tạo chức năng Transfer_funds_old () trả về void dưới dạng $$

Lưu ý

Mặc dù kèo bóng đá việt nam nhà quản lý ngữ cảnh đã được triển khai trong Python 2.5, để sử dụngvớiCú pháp trong phiên bản đó bạn cần sử dụngTuyên bố trong tương lai. Tuy nhiên, do chi tiết thực hiện, bạn không thể sử dụng kèo bóng đá việt nam câu lệnh trong tương lai trong kèo bóng đá việt nam chức năng PL/Python.