Когда SQLServer 2005 не сможет выполнить вставку / обновление И ТАКЖЕ НЕ БУДЕТ «выбросить» исключение? - PullRequest
0 голосов
/ 25 декабря 2008

После выполнения запроса вставки или обновления для базы данных SQLServer 2005, по какому сценарию (если он вообще возможен) это может произойти - SQLServer 2005 не выполняет или не выполняет вставку / обновление, И ТАКЖЕ НЕ БРОСАЕТ ИСКЛЮЧЕНИЕ

Учтите, что мы выполняем запрос вставки или обновления через объект SqlCommand. Также учтите, что таблица, для которой используется запрос вставки или обновления, имеет

  • поля идентичности
  • поля, которые не являются нулевыми,
  • поля с соответствующими типами данных
  • поля, которые являются ссылочными ключами
  • поля, к которым применены проверочные ограничения
  • и т.д.

Предположим, что в запросе на обновление условие «ГДЕ» найдет запись, которую необходимо обновить.

Можем ли мы предположить, что после выполнения SqlCommand.ExecuteNonQuery (), если вставка или обновление не выполняются, тогда ВСЕГДА будет происходить необработанное исключение? В противном случае мы можем предположить, что запрос на вставку или обновление был успешным.

Ответы [ 3 ]

0 голосов
/ 25 декабря 2008

Переместите свою логику в хранимые процедуры базы данных и создайте исключения (RAISERROR) оттуда. Тогда ваша команда (которая вызовет соответствующую хранимую процедуру) будет иметь необходимые исключения.

0 голосов
/ 25 декабря 2008

Можно предположить, что будет сгенерировано исключение (SqlException), ЕСЛИ В INSERT / UPDATE содержится предложение WHERE, которое не соответствует ни одной строке.

0 голосов
/ 25 декабря 2008

Посмотрите на возвращаемое значение ExecuteNonQuery (), чтобы увидеть количество затронутых записей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...