Нужен пример условного обновления хранимой процедуры на SQL сервере - PullRequest
0 голосов
/ 09 января 2011

Я только на начальных уровнях использования БД и у меня есть 2 основных вопроса

  1. У меня есть общий процесс UPDATE, который обновляет все столбцы таблицы.

Но мне нужно сделать его условным, при котором он НЕ УСТАНАВЛИВАЕТСЯ, если параметр НЕДЕЙСТВИТЕЛЕН.

Использование: Я хочу использовать это как один SP для ОБНОВЛЕНИЯ любого подмножества столбцов, вызывающая сторона из C # заполнит соответствующие значения параметров и оставит другие параметры NULL.

2

В случае «ОБНОВИТЬ выбранные записи» мне нужно использовать блокировку внутри хранимого процесса?

Почему? Разве операция сама по себе не заблокирована и не является транзакционной?

Я обнаружил, что тот же вопрос возникает, когда мне нужно ОБНОВИТЬ выбранные записи (условия), а затем возвращать обновленные записи.

Ответы [ 2 ]

2 голосов
/ 09 января 2011

Если я правильно понял вопрос, почему вы не можете создать запрос на лету из sql server SP и использовать sp_sqlexecute.Поэтому, когда вы строите запрос, вы можете убедиться, что обновлены только столбцы со значением.

Отвечает ли это на ваш вопрос?

1 голос
/ 09 января 2011

ОБНОВЛЕНИЕ таблицы SET a = случай, когда @a равно нулю, тогда еще @a заканчивается ГДЕ id = @ id

OR

EXEC 'обновить таблицу' + @update + ', где id =' + @ id

OR

Условно обновлять столбец за раз


Первый вариант для меня обычно предпочтительнее, так как обычно он достаточно эффективен, и вам не нужно беспокоиться о экранировании строки

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