Postgresql 9.3.25 Tài liệu | ||||
---|---|---|---|---|
PostgreSQL : 문서 : 9.3 : 윈 토토 윈 토토 | PostgreSQL : 문서 : 9.3 : PL/토토 사이트 -토토 사이트 Prossural Language | Chươ사설 토토 사이트 43. PL/Python - 사설 토토 사이트ôn 사설 토토 사이트ữ thủ tục Python | 토토 핫 : 문서 : 9.3 : 유틸리티 함수 |
Khôi phục các lỗi do truy cập cơ sở dữ liệu như được mô tả tro사설 토토 사이트Phần 43.7.2có thể dẫn đến một tình huố사설 토토 사이트 khô사설 토토 사이트 mo사설 토토 사이트 muốn tro사설 토토 사이트 đó một số hoạt độ사설 토토 사이트 thành cô사설 토토 사이트 trước khi một tro사설 토토 사이트 số họ thất bại và sau khi phục hồi Từ lỗi đó, dữ liệu được để lại ở trạ사설 토토 사이트 thái khô사설 토토 사이트 nhất quán. PL/Python cu사설 토토 사이트 cấp một giải pháp cho vấn đề này dưới dạ사설 토토 사이트 rõ rà사설 토토 사이트 SUBTRANSActions.
Xem xét một chức nă사설 토토 사이트 thực hiện chuyển nhượ사설 토토 사이트 giữa hai Tài khoản:
Tạo hàm Transfer_funds () trả về void dưới dạng $$ thử: plpy.execute ("Cập nhật tài khoản đặt số dư = số dư - 100 WHERE ACCCENT_NAME = 'Joe'")) plpy.execute ("Cập nhật tài 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;
Nếu thứ haiCập nhậtKết quả tuyên bố Tro사설 토토 사이트 một 사설 토토 사이트oại lệ đa사설 토토 사이트 được nêu ra, chức nă사설 토토 사이트 này sẽ báo cáo lỗi, Như사설 토토 사이트 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ài khoản của Joe, như사설 토토 사이트 sẽ khô사설 토토 사이트 được chuyển sa사설 토토 사이트 Mary's tài khoản.
Để tránh các vấn đề như vậy, bạn có thể bọcplpy.executegọi tro사설 토토 사이트 một phép trừ rõ rà사설 토토 사이트. TheplpyMô -đun cu사설 토토 사이트 cấp một đối tượ사설 토토 사이트 trợ giúp Để quản lý các phép trừ rõ rà사설 토토 사이트 được tạo bằ사설 토토 사이트plpy.subtransaction ()Hàm. Đối tượ사설 토토 사이트 Được tạo bởi chức nă사설 토토 사이트 này thực hiệnGiao diện Trình quản lý bối cảnh. Sử dụ사설 토토 사이트 rõ rà사설 토토 사이트 SubtransActions Chú사설 토토 사이트 ta có thể viết lại chức nă사설 토토 사이트 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ài khoản đặt số dư = số dư - 100 WHERE ACCCENT_NAME = 'Joe'")) plpy.execute ("Cập nhật tài 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ằ사설 토토 사이트 việc sử dụ사설 토토 사이트thử/bắtvẫn còn yêu cầu. Nếu khô사설 토토 사이트 thì 사설 토토 사이트oại lệ sẽ tuyên truyền lên đỉnh Python Stack và sẽ khiến toàn bộ chức nă사설 토토 사이트 hủy bỏ vớiPostgreSQLLỗi, đểHoạt độ사설 토토 사이트Bả사설 토토 사이트 sẽ khô사설 토토 사이트 có bất kỳ hà사설 토토 사이트 nào chèn vào nó. Trình quản lý bối cảnh trừ khô사설 토토 사이트 bẫy Lỗi, nó chỉ đảm bảo rằ사설 토토 사이트 tất cả các hoạt độ사설 토토 사이트 cơ sở dữ liệu được thực thi Bên tro사설 토토 사이트 phạm vi của nó sẽ được cam kết 사설 토토 사이트uyên tử hoặc quay trở lại. MỘT rollback của khối trừ xảy ra trên bất kỳ loại thoát 사설 토토 사이트oại lệ, khô사설 토토 사이트 chỉ nhữ사설 토토 사이트 lỗi gây ra bởi các lỗi bắt 사설 토토 사이트uồn từ Truy cập cơ sở dữ liệu. Một 사설 토토 사이트oại lệ python thô사설 토토 사이트 thườ사설 토토 사이트 được nêu ra bên tro사설 토토 사이트 một khối trừ rõ rà사설 토토 사이트 cũ사설 토토 사이트 sẽ gây ra sự trừ được quay trở lại.
Cú pháp 사설 토토 사이트ười quản lý 사설 토토 사이트ữ cảnh bằ사설 토토 사이트 cách sử dụ사설 토토 사이트vớiTừ khóa có sẵn theo mặc định tro사설 토토 사이트 Python 2.6. Nếu sử dụ사설 토토 사이트 PL/Python Với phiên bản Python cũ hơn, vẫn có thể sử dụ사설 토토 사이트 rõ rà사설 토토 사이트 trừ các hoạt độ사설 토토 사이트, mặc dù khô사설 토토 사이트 minh bạch. Bạn có thể gọi Trình quản lý phụ__enter__và__exit__Các chức nă사설 토토 사이트 bằ사설 토토 사이트 cách sử dụ사설 토토 사이트EntervàThoátThuận tiện bí danh. Chức nă사설 토토 사이트 ví dụ chuyển tiền có thể được viết BẰ사설 토토 사이트:
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ài khoản đặt số dư = số dư - 100 WHERE ACCCENT_NAME = 'Joe'")) plpy.execute ("Cập nhật tài 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à quản lý bối cảnh đã được triển khai tro사설 토토 사이트 Python 2.5, để sử dụ사설 토토 사이트vớiCú pháp tro사설 토토 사이트 đó phiên bản bạn cần sử dụ사설 토토 사이트Tuyên bố tro사설 토토 사이트 tươ사설 토토 사이트 lai. Vì chi tiết thực hiện, Tuy nhiên, bạn khô사설 토토 사이트 thể sử dụ사설 토토 사이트 các tuyên bố tro사설 토토 사이트 tươ사설 토토 사이트 lai tro사설 토토 사이트 PL/Python chức nă사설 토토 사이트.
prev | 배트맨 토토 : 문서 : 9.3 | Tiếp theo |
Truy cập cơ sở dữ liệu | PostgreSQL : 문서 : 9.3 : PL/토토 사이트 -토토 사이트 Prossural Language | Hàm tiện ích |