Postgresql 9.3.25 tỷ lệ kèo bóng đá trực tuyến hôm nay liệu | ||||
---|---|---|---|---|
prev | UP | Chương 43. PL/Python - Ngôn ngữ thủ tục Python | NEXT |
Khôi phục các lỗi do truy cập cơ sở dữ liệu như được mô tả trongPhần 43.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ố họ thất bại và sau khi phục hồi Từ lỗi đó, dữ liệu được để 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 tỷ lệ kèo bóng đá trực tuyến hôm nay SUBTRANSActions.
9759_9829
9860_10358
Nếu thứ haiCập nhậtKết quả tuyên bố Trong một ngoại lệ đang đượ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ậtWill Tuy nhiên, được cam kết. Nói cách khác, các quỹ sẽ rút khỏi tỷ lệ kèo bóng đá trực tuyến hôm nay khoản của Joe, nhưng sẽ không được chuyển sang Mary's tỷ lệ kèo bóng đá trực tuyến hôm nay khoản.
Để tránh các vấn đề như vậy, bạn có thể bọcplpy.executegọi trong một phép trừ tỷ lệ kèo bóng đá trực tuyến hôm nay. TheplpyMô -đun cung cấp một đối tượng trợ giúp Để quản lý các phép trừ tỷ lệ kèo bóng đá trực tuyến hôm nay được tạo bằngplpy.subtransaction ()Hàm. Đối tượng Được tạo bởi chức năng này thực hiệnGiao diện Trình tỷ lệ kèo bóng đá trực tuyến hôm nay lý bối cảnh. Sử dụng tỷ lệ kèo bóng đá trực tuyến hôm nay SubtransActions 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 $$ thử: với plpy.subtransaction (): plpy.execute ("Cập nhật tỷ lệ kèo bóng đá trực tuyến hôm nay khoản đặt số dư = số dư - 100 WHERE ACCCENT_NAME = 'Joe'")) plpy.execute ("Cập nhật tỷ lệ kèo bóng đá trực tuyến hôm nay khoản đặt số dư = số dư + 100 where account_name = 'Mary'")) ngoại trừ plpy.spierror, e: result = "Lỗi chuyển tiền: % s" % e.args khác: result = "tiền được chuyển chính xác" plan = plpy.prepare ("chèn vào các giá trị hoạt động (kết quả) ($ 1)", ["văn bản"])) plpy.execute (kế hoạch, [kết quả]) $$ ngôn ngữ plpythonu;
Lưu ý rằng việc sử dụngthử/bắtvẫn còn yêu cầu. Nếu không thì ngoại lệ sẽ tuyên truyền lên đỉnh Python Stack và sẽ khiến toàn bộ chức năng hủy bỏ vớiPostgreSQLLỗi, đểHoạt động12115_12608
Cú pháp người tỷ lệ kèo bóng đá trực tuyến hôm nay 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 tỷ lệ kèo bóng đá trực tuyến hôm nay trừ các hoạt động, mặc dù không minh bạch. Bạn có thể gọi Trình quản lý phụ__enter__và__exit__Các chức năng bằng cách sử dụngEntervàThoátThuận tiện bí danh. Chức năng ví dụ chuyển tiền có thể được viết BẰNG:
Tạo chức năng Transfer_funds_old () trả về void dưới dạng $$ thử: subxact = plpy.subtransaction () subxact.enter () thử: plpy.execute ("Cập nhật tỷ lệ kèo bóng đá trực tuyến hôm nay khoản đặt số dư = số dư - 100 WHERE ACCCENT_NAME = 'Joe'")) plpy.execute ("Cập nhật tỷ lệ kèo bóng đá trực tuyến hôm nay khoản đặt số dư = số dư + 100 where account_name = 'Mary'")) ngoại trừ: nhập khẩu sys subxact.exit (*sys.exc_info ()) nâng lên khác: subxact.exit (không có, không có, không có) ngoại trừ plpy.spierror, e: result = "Lỗi chuyển tiền: % s" % e.args khác: result = "tiền được chuyển chính xác" plan = plpy.prepare ("chèn vào các giá trị hoạt động (kết quả) ($ 1)", ["văn bản"])) plpy.execute (kế hoạch, [kết quả]) $$ ngôn ngữ plpythonu;
Lưu ý:Mặc dù các nhà tỷ lệ kèo bóng đá trực tuyến hôm nay lý bối cảnh đã được triển khai trong Python 2.5, để sử dụngvớiCú pháp trong đó phiên tỷ lệ kèo bóng đá trực tuyến hôm nay bạn cần sử dụngTuyên bố trong tương lai. Vì chi tiết thực hiện, Tuy nhiên, bạn không thể sử dụng các tuyên bố trong tương lai trong PL/Python chức năng.