Обычно у меня есть usp_sp_Name_InsertOrUpdate
хранимые процедуры
Так что моя структура проста:
UPDATE [TableName]
SET [Column] = @NewValue
WHERE ...
IF @@ROWCOUNT = 0
BEGIN
INSERT INTO [TableName] ...
END
Чтобы возобновить это, хранимая процедура ищет обновление, если оно ничего не обновляет@@ROWCOUNT == 0
, так что переходите к INSERT
утверждению, если @ROWCOUNT > 0
просто остановится на этом.
Мой вопрос. Если у меня более одного оператора UPDATE
, например:
UPDATE [TableName]
SET [Column] = @NewValue
WHERE ...
UPDATE [AnotherTableName]
SET [Column] = @NewValue
WHERE ...
Если первое обновление возвращает @@ROWCOUNT > 0
, а второе возвращает 0
, хранимая процедура продолжается с оператором INSERT
, поскольку @@ROWCOUNT
обнаруживает только последнееUPDATE
запрос.
Есть ли хитрость, чтобы узнать, возвращает ли какое-либо обновление @@ROWCOUNT > 0
, если оно не последнее?