У меня есть (другой) вопрос о написании OleDbCommand's. У меня есть сложная команда выбора (включая несколько левых объединений), и OleDbCommandBuilder не может генерировать команды обновления для меня.Пользовательские письма Команды OleDbCommand
Я не могу понять магию за написанием команд обновления. Я знаю структуру инструкции SQL update, однако я немного озадачен тем, как это работает с OleDbDataAdapter. Я знаю, что когда я вызываю адаптер.Update(), он обновляет только нужные строки DataTable, однако я не знаю, как написать команду Update, чтобы он смог узнать, какое поле в , какая таблица нуждается в обновлении.
Я был бы очень признателен, если бы кто-то мог объяснить мне этот процесс и указать мне в правильном направлении.
Edit: Поскольку никто не отвечает, я буду публиковать некоторые подробности относительно моего вопроса:
У меня есть отборное заявление в такой форме:
select field1, field2, fieldn from table1 left join table2 on condition left join table3 on condition where condition1 and condition2
один озадачивает меня это как должен ли я писать заявление об обновлении, так как я не могу написать его так:
update table1, table2 set field1 = newvalue where condition1 and condition2
Так что я не понимаю, как это сделать, поскольку оператор обновления принимает только один аргумент таблицы. Можно ли даже вызвать метод OleDbDataAdapter.Update для такого типа DataTables?
Ну, это определенно полезно, однако все еще есть проблема. DataRow содержит столбцы из разных таблиц, и любой из них может быть изменен - и мне до сих пор неясно, как я мог написать команду обновления, которая могла бы изменить любое из этих полей. –
Я уверен, что вам нужно выпустить инструкцию для обновления для каждой из таблиц, затем ... –
Проверьте триггеры INSTEAD OF, возможно, что вы ищете –