Ihr Dequeue könnte prägnanter sein. Anstatt sich auf das Transaktions-Rollback zu verlassen, könnten Sie dies in einer atomaren Anweisung ohne explizite Transaktion tun:
UPDATE jobs SET process_id = ? WHERE process_id IS NULL ORDER BY ID ASC LIMIT 1;
Dann können Sie Jobs abrufen mit (Klammern [] bedeuten optional, abhängig von Ihren Angaben):
SELECT * FROM jobs WHERE process_id = ? [ORDER BY ID LIMIT 1];