my $updateDeduct = $DBH->prepare("UPDATE USER SET BALANCE = BALANCE - ? WHERE USERNAME = ?"); my $updateAdd = $DBH->prepare("UPDATE USER SET BALANCE = BALANCE + ? WHERE USERNAME = ?"); $DBH->do("BEGIN"); # explicitly start a new transaction # this overrides autocommit setting $updateDeduct->execute($amount, $user); $updateAdd=>execute($amount, $user); $DBH->do("COMMIT"); #end transaction, this is the "expensive part" timewise