Phiên bản được hỗ trợ:hiện tại(17)16 / 15
Phiên bản phát triển:18 / Devel
Tài liệu 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 các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

13,5. Xử lý thất bại tuần tự kèo bóng đá hom nay#

Cả hai cấp độ phân lập đọc và nối tiếp có thể lặp lại có thể tạo ra các lỗi được thiết kế để ngăn chặn các bất thường kèo bóng đá hom nay tuần tự kèo bóng đá hom nay. Như đã nêu trước đây, các ứng dụng sử dụng các cấp độ này phải được chuẩn bị để thử lại các giao dịch không thành công do lỗi tuần tự kèo bóng đá hom nay.40001(serialization_failure).

Nó cũng có thể được khuyến khích để thử lại các kèo bóng đá hom nay. Chúng có mã SQLSTATE40p01(hoadlock_detected).

Trong một số trường hợp, nó cũng phù hợp để thử lại các lỗi duy nhất, có mã SQLSTATE23505(độc đáo_violation) và các lỗi ràng buộc loại trừ, có mã SQLSTATE23p01(Exclusion_Violation). Ví dụ: nếu ứng dụng chọn một giá trị mới cho cột khóa chính sau khi kiểm tra các khóa hiện được lưu trữ, nó có thể bị lỗi khóa duy nhất vì một trường hợp ứng dụng khác đã chọn cùng một khóa mới đồng thời.HồixemHồiKết nối giữa giá trị được chèn và các lần đọc trước đó. Ngoài ra còn có một số trường hợp góc trong đó máy chủ sẽ đưa ra lỗi ràng buộc duy nhất hoặc loại trừ mặc dù về nguyên tắc, nó có đủ thông tin để xác định rằng vấn đề tuần tự kèo bóng đá hom nay là nguyên nhân cơ bản.serialization_failureLỗi vô điều kiện, cần được chăm sóc nhiều hơn khi thử lại các mã lỗi khác này, vì chúng có thể đại diện cho các điều kiện lỗi liên tục thay vì lỗi thoáng qua.

Điều quan trọng là phải thử lại giao dịch hoàn chỉnh, bao gồm tất cả logic quyết định SQL sẽ phát hành và/hoặc giá trị nào sẽ sử dụng. Vì thế,PostgreSQLKhông cung cấp một cơ sở thử lại tự động, vì nó không thể làm như vậy với bất kỳ sự đảm bảo nào về tính chính xác.

Thử lại giao dịch không đảm bảo rằng giao dịch được thử lại sẽ hoàn tất; Nhiều lần thử lại có thể cần thiết.