Từ tài liệu cho find_or_create
:Làm thế nào để tránh điều kiện chủng tộc khi sử dụng phương thức find_or_create của DBIx :: Class :: ResultSet?
Lưu ý: Bởi vì find_or_create() đọc từ cơ sở dữ liệu và sau đó có thể chèn dựa trên kết quả, phương pháp này là đối tượng của một cuộc đua điều kiện . Một quy trình khác có thể tạo bản ghi trong bảng sau khi tìm thấy đã hoàn tất và trước khi tạo đã bắt đầu. Để tránh vấn đề này, hãy sử dụng find_or_create() bên trong một giao dịch.
Có đủ để chỉ sử dụng find_or_create()
trong giao dịch trong PostgreSQL không?
Các trang hữu ích khác. Tài liệu: http://www.postgresql.org/docs/current/interactive/mvcc.html PostgreSQL phiên bản 9.1 hoặc mới hơn có thể thực thi tuần tự: http://wiki.postgresql.org/wiki/SSI Các cấp độ cách ly hoặc phiên bản PostgreSQL khác: http : //www.postgresql.org/files/developer/concurrency.pdf – kgrittn
Nhưng cách thích hợp để nắm bắt "lỗi vi phạm khóa trùng lặp" trong DBIC là gì? –
@eugeney: Tôi cho rằng bạn mở một câu hỏi mới cho điều đó, thay vì nhận xét. Bạn luôn có thể liên kết với trang này để tiết kiệm cho mình một số cách gõ. –