Задавайте вопросы, мы ответим
Вы не зашли.
Добрый день.
Есть необходимость сделать несколько update(сотен).
Вот мой алгорит. Я дерую с одной таблицы нужную инфу.
select t2.id as barcode, SUBSTRING_INDEX(t2.item,'@',1) as art, t1.version, t2.nomenclature_id as nom from trm_in_items t1
left join trm_in_var t2 on t1.id=t2.item and t1.deleted=t2.deleted and t1.nomenclature_id=t2.nomenclature_id
where t1.classif = '.40452.40453.40646.' and t2.id is not null and t2.nomenclature_id=24 order by 2
В ответ приходит напрмер 100 записей
Нужен
UPDATE trm_in_var SET item = 'art', version = 0 WHERE id = 'barcode' and version ="version" and nomenclature_id ='nom';
UPDATE trm_in_var SET item = 'art', version = 0 WHERE id = 'barcode' and version ="version" and nomenclature_id ='nom';
UPDATE trm_in_var SET item = 'art', version = 0 WHERE id = 'barcode' and version ="version" and nomenclature_id ='nom';
UPDATE trm_in_var SET item = 'art', version = 0 WHERE id = 'barcode' and version ="version" and nomenclature_id ='nom';
UPDATE trm_in_var SET item = 'art', version = 0 WHERE id = 'barcode' and version ="version" and nomenclature_id ='nom';
UPDATE trm_in_var SET item = 'art', version = 0 WHERE id = 'barcode' and version ="version" and nomenclature_id ='nom';
**********
И таких сотня мб и больше. nomenclature_id меняется. Получаем его из селекта(
И таких запросов много( Как можно собрать в один. Подскажите пожалуйста
Я думал прокатит склеить "UPDATE trm_in_var SET item = 'art', version = 0 WHERE id = 'barcode' and version ="version" and nomenclature_id ='nom';
UPDATE trm_in_var SET item = 'art', version = 0 WHERE id = 'barcode' and version ="version" and nomenclature_id ='nom';" в одну строку и выполнить не прокатило(((
Делаю на C#.
если выполнить в навикате наример то срабатывает)
Отредактированно Martoha (03.08.2019 14:03:46)
Неактивен
если меняется только nomenclature_id, то
UPDATE trm_in_var SET item = 'art', version = 0 WHERE id = 'barcode' and version ="version" and nomenclature_id in (список nom полученный из селекта);
Неактивен
А можно просто завернуть в транзакцию пачку запросов - тогда либо все выполнятся либо ни один.
Неактивен
deadka написал:
А можно просто завернуть в транзакцию пачку запросов - тогда либо все выполнятся либо ни один.
Да так и получилось. StringBuilder все собрал в один запрос и отправил. Спасибо.
Неактивен