O truque que eu uso regularmente para aliviar esse problema é criar uma rotina armazenada que garanto que é atômica usando o seguinte:
SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
START TRANSACTION;
[your queries here]
COMMIT;
Eu acho que você pode imitar esse comportamento programaticamente.