Я пытаюсь закодировать многопоточную программу с использованием 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. Это правда? И если да, то есть ли обходной путь?