Я пытаюсь написать SQL SELECT ... FOR UPDATE, используя Anorm in Play, чтобы я мог взаимодействовать с несколькими потоками с одной и той же базой данных, но это бросает проблему.SELECT ... FOR UPDATE с использованием Anorm
Код:
db.withConnection { implicit connection: Connection =>
SQL"""
start transaction;
select * from push_messages where vendorId=$vendorId for update;
UPDATE push_messages set stageOne=$first, stageTwo=$second, stageThree=$third,
stageFour=$fourth, stageFive=$fifth, highestStage=$highestStage, iOSTotal=$iOSTotal,
androidTotal=$androidTotal, iOSRunningCount=$iOSRunningCount, androidRunningCount=$androidRunningCount,
problem=$newProblem, iOSComplete=$iOSCompleted, androidComplete=$newAndroidComplete,
totalStageThrees=$totalStageThrees, totalStageFours=$totalStageFours, expectedTotals=$expectedTotals,
startTime=$startTime, date=$date, topics=$topics, androidFailures=$androidFailures, iOSFailures=$iOSFailures where vendorId=$vendorId;
commit;
""".execute
}
Но это, кажется, не нравится использование .execute
на select
заявлении. Есть ли хороший способ разбить это, чтобы сделать select...for update
, чтобы я мог использовать либо execute()
, либо executeUpdate
?
Любая помощь будет оценена. Благодарю.
Я не вижу, как вы намерены достичь лучшего многопоточности, используя «SQL SELECT ... FOR UPDATE» ... – cchantep