Phiên bản được hỗ trợ:hiện tại(17)16 / 15 / 14 / 13
Phiên bản phát triển:18 / Devel
Phiên bản không được hỗ trợ:12 / 11 / 10

44.9. SubtransActions kèo bóng đá hom nay

Khôi phục từ các lỗi do truy cập cơ sở dữ liệu như được mô tả kèo bóng đá hom nayPhần 44.8có thể dẫn đến một tình huống không mong muốn kèo bóng đá hom nay đó một số hoạt động thành công trước khi một kèo bóng đá hom nay 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/TCL cung cấp một giải pháp cho vấn đề này dưới dạng các phép trừ rõ ràng.

Xem xét một hàm thực hiện chuyển giữa hai kèo bóng đá hom nay khoản:

Tạo hàm 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ệ đang được nâng lên, chức năng này sẽ ghi lại sự thất bại, nhưng kết quả của lần đầu tiênCập nhậtvẫn sẽ được cam kết. Nói cách khác, các khoản tiền sẽ được rút khỏi kèo bóng đá hom nay khoản của Joe, nhưng sẽ không được chuyển vào kèo bóng đá hom nay khoản của Mary.SPI_EXEC

Để xử lý các trường hợp như vậy, bạn có thể kết thúc nhiều hoạt động cơ sở dữ liệu kèo bóng đá hom nay một phép trừ rõ ràng, sẽ thành công hoặc quay trở lại toàn bộ. PL/TCL cung cấp mộtSubtransactionLệnh để quản lý điều này. Chúng ta có thể viết lại chức năng của mình là:

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

Lưu ý rằng sử dụngCatchvẫn được yêu cầu cho mục đích này. Nếu không thì lỗi sẽ lan truyền đến cấp cao nhất của hàm, ngăn chặn việc chèn mong muốn vàoHoạt độngBảng. TheSubtransactionLệnh không bẫy lỗi, nó chỉ đảm bảo rằng tất cả các hoạt động cơ sở dữ liệu được thực thi bên kèo bóng đá hom nay phạm vi của nó sẽ được cuộn lại với nhau khi báo cáo lỗi.

Một sự cuộn lại của quá trình trừ rõ ràng xảy ra trên bất kỳ lỗi nào được báo cáo bởi mã TCL có chứa, không chỉ các lỗi bắt nguồn từ truy cập cơ sở dữ liệu. Do đó, một ngoại lệ TCL thông thường được nêu ra bên kèo bóng đá hom naySubtransactionLệnh cũng sẽ làm cho việc trừ được cuộn trở lại. Tuy nhiên, không lỗi thoát ra khỏi mã kèo bóng đá hom nay chứa (ví dụ, doreturn) Không gây ra rollback.

Gửi hiệu chỉnh

Nếu bạn thấy bất cứ điều gì kèo bóng đá hom nay tài liệu không chính xác, không khớpMẫu nàyĐể báo cáo vấn đề tài kèo bóng đá hom nay.