Многопоточный VB.net: обновить, а затем вернуть идентификатор строки? - PullRequest
0 голосов
/ 27 июня 2018

Я пытаюсь закодировать многопоточную программу с использованием VB.NET. Это простая программа: зайти в базу данных, получить строку, обработать какой-нибудь бэкэнд, затем обновить строку и установить ее как «processing = true». Поскольку данных так много, я планирую создать для них многопоточную программу.

SELECT ... FOR UPDATE, похоже, не работает в транзакции по какой-то странной причине, и поэтому я решил предварительно пометить строку как «считываемая = TRUE», а затем обработать ее оттуда.

Можно ли обновить строку, а затем получить идентификатор строки из того же оператора SQL?

Я пытался использовать эти операторы SQL вместе:

Dim sqlUpdateStatement As String = "SET @uid := 0;UPDATE process_data SET reading = TRUE, idprocess_data = (SELECT @uid := idcrawl_data) WHERE reading IS NOT TRUE AND processed IS NOT TRUE LIMIT 1;SELECT @uid;"

но он говорит мне, что во время выполнения команды произошла фатальная ошибка.

Есть идеи?

EDIT

После некоторого тестирования я пришел к выводу, что вы не можете использовать переменные MySQL при выполнении обновлений в VB.Net. Это правда? И если да, то есть ли обходной путь?

1 Ответ

0 голосов
/ 28 июня 2018

В конце концов я потратил время на отладку части кода SELECT FOR UPDATE, чтобы заставить его работать на основе транзакций. Спасибо всем за уделенное время!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...