Проблема с триггерами удаления - SQL Server 2005 - PullRequest
0 голосов
/ 01 июня 2011

У меня есть два поля, LastModifiedBy и DateLastModified в таблице SQL.Используя ADO.net, я изменяю эти поля и вызываю функцию AcceptChanges, чтобы зафиксировать эти изменения в наборе данных (не в базе данных).Затем я вызываю функцию удаления в datarow.Затем я вызываю функцию обновления на адаптере.Технически, у datarow теперь есть значения в двух упомянутых выше полях, и они фиксируются в наборе данных, но триггер удаления SQL Server по-прежнему показывает, что значения в этих полях равны нулю.Как это может быть?

С уважением, Сантош

1 Ответ

0 голосов
/ 02 июня 2011

Из-за нескольких проблем:

  • Вы изменяете поля и затем вызываете AcceptChanges = наборы данных считают, что эти данные были сохранены в базе данных, но они этого не сделали!
  • Вы удаляете строку, но удаление не приводит к передаче изменений в базу данных. Он просто вызывает delete для текущего состояния строки в базе данных.

Таким образом, вы должны разделить операцию на два шага:

  • Изменить поля и обновить изменения в базе данных - он запишет поля в запись
  • Удалить строку и обновить изменения в базе данных - она ​​удалит запись с уже пропущенными полями

Сделайте это за одну транзакцию.

...