Что происходит, когда я обновляю столбец SQL для себя?-ИЛИ- Упрощенные условные обновления? - PullRequest
3 голосов
/ 28 сентября 2010

Я хотел бы вызвать хранимую процедуру обновления, которая не обязательно будет включать все столбцы. Вероятно, есть лучший способ справиться с этим .... Как видите, если я не передам параметры столбца, их значение равно NULL. Затем, используя ISNULL, я устанавливаю для столбцов либо новые значения, либо их существующие значения.

CREATE PROCEDURE [dbo].[spUpdateTable] 

 @pPKID bigint = NULL,
 @pColumn1 int = NULL, 
 @pColumn2 int = NULL

AS
BEGIN

 SET NOCOUNT ON;

 UPDATE
    TableName
 SET
    [Column1] = ISNULL(@pColumn1,[Column1]),
    [Column2] = ISNULL(@pColumn2,[Column2])

 WHERE
    [PKID] = @pPKID
END

1 Ответ

2 голосов
/ 28 сентября 2010

Это в основном то же самое, что делают хранимые процедуры репликации транзакций при обновлении таблицы на подписчике. Если Microsoft делает это самостоятельно, это должно быть безопасно, верно? : -)

Серьезно, моей главной заботой здесь будут любые триггеры обновления, которые могут существовать в таблице. Вы хотели бы понять влияние потенциального запуска этих триггеров на то, что может быть неизменным. В противном случае я думаю, что ваша техника в порядке.

...