Dequeue của bạn có thể ngắn gọn hơn. Thay vì dựa vào khôi phục giao dịch, bạn có thể thực hiện điều đó trong một câu lệnh nguyên tử mà không cần giao dịch rõ ràng:
UPDATE jobs SET process_id = ? WHERE process_id IS NULL ORDER BY ID ASC LIMIT 1;
Sau đó, bạn có thể kéo các công việc bằng (dấu ngoặc [] có nghĩa là tùy chọn, tùy thuộc vào thông tin chi tiết của bạn):
SELECT * FROM jobs WHERE process_id = ? [ORDER BY ID LIMIT 1];