Theo hiểu biết của tôi, một lựa chọn không có được khóa và không phải là nguyên nhân gây ra bế tắc.
Mỗi khi bạn chèn / cập nhật / hoặc xóa một hàng, sẽ có một khóa. Để tránh bế tắc, bạn phải đảm bảo rằng các giao dịch đồng thời không cập nhật hàng theo thứ tự có thể dẫn đến bế tắc. Nói chung, để tránh bế tắc bạn phải có được khóa luôn theo cùng một thứ tự ngay cả trong các giao dịch khác nhau (ví dụ:luôn là bảng A trước, sau đó đến bảng B).
Nhưng nếu trong một giao dịch, bạn chỉ chèn vào một bảng thì điều kiện này được đáp ứng và điều này thường không dẫn đến bế tắc. Bạn có đang làm gì khác trong giao dịch không?
Tuy nhiên, bế tắc có thể xảy ra nếu có chỉ mục bị thiếu . Khi một hàng được chèn / cập nhật / xóa, cơ sở dữ liệu cần phải kiểm tra các ràng buộc quan hệ, nghĩa là, đảm bảo các quan hệ nhất quán. Để làm như vậy, cơ sở dữ liệu cần kiểm tra các khóa ngoại trong các bảng liên quan. Nó có thể dẫn đến khóa khác được mua hơn hàng được sửa đổi. Sau đó, hãy đảm bảo luôn có chỉ mục trên khóa ngoại (và tất nhiên là khóa chính), nếu không, điều này có thể dẫn đến khóa bảng thay vì khóa hàng . Nếu hiện tượng khóa bảng xảy ra, sự tranh chấp về khóa càng cao và khả năng bị khóa càng tăng.
Không chắc điều gì xảy ra chính xác trong trường hợp của bạn, nhưng có thể nó sẽ hữu ích.