none
Не обновлять столбец в UpdateCommand RRS feed

  • Вопрос

  • Доброго времени суток. Такая проблема :

    В базе sql на таблице висит  тригер, который логирует какие колонки были изменены.

    при выполнении sqlDataAdapter.updateCommand  тригер отлавливает что были изменены все значения, даже если никаких значений не изменялось (было просто вызвано событие sqlDataAdapter.Update()). Можно  ли как нибудь от этого избавится? Т.е.

    чтобы если значение в ColumnName не изменялось, то в sql  update(ColumnName ) было равно false?

    19 ноября 2012 г. 11:28

Ответы

  • К сожалению, UpdateCommand генерирует запрос, который переприсваивает все значения в строке, кроме первичного ключа, даже если изменилось всего одно поле. Можете попробовать тригер повесить перед Update-ом и сравнивать те значения которые вам пришли, с теми что есть в таблице. Ну и если отличаются, значит вот он, искомый столбец.

    • Помечено в качестве ответа EvgenOrel 20 ноября 2012 г. 4:59
    19 ноября 2012 г. 16:11
    Отвечающий

Все ответы

  • К сожалению, UpdateCommand генерирует запрос, который переприсваивает все значения в строке, кроме первичного ключа, даже если изменилось всего одно поле. Можете попробовать тригер повесить перед Update-ом и сравнивать те значения которые вам пришли, с теми что есть в таблице. Ну и если отличаются, значит вот он, искомый столбец.

    • Помечено в качестве ответа EvgenOrel 20 ноября 2012 г. 4:59
    19 ноября 2012 г. 16:11
    Отвечающий
  • Хуже того, он переписывает все значения даже если пользователь ничего не поменял. Придется проверять перед сохранением RowState и в тригере действительно сравнивать колонки таблиц inserted и deleted. Спасибо!
    20 ноября 2012 г. 4:59