Я выполняю некоторые операторы обновления в SQL и хочу вернуть в таблицу аудита, сколько строк было затронуто. Теперь я понимаю (и видел примеры), что для этого можно использовать @@ ROWCOUNT. Проблема в том, что я использую оператор обновления с оператором IF.
BEGIN TRANSACTION
WHILE 1=1
BEGIN
BEGIN TRANSACTION
--update a 1000 rows at a time
UPDATE TOP (1000) table1
SET flag = 1,
WHERE ID IN (SELECT ID FROM #list)
IF @@ROWCOUNT = 0 -- terminating condition
BEGIN
COMMIT TRANSACTION
BREAK
END
COMMIT TRANSACTION
WAITFOR DELAY '00:00:01';
END
--COMMIT TRANSACTION
ROLLBACK TRANSACTION
GO
Теперь я хочу использовать что-то вроде следующего.
INSERT INTO @Audit
SELECT 'table1', @@ROWCOUNT
Но где бы я ни поместил его в обновление, оно всегда возвращает 0. Я пытался переназначить его на другую переменную, но все равно не радуюсь.
Любые указатели на это были бы великолепны.
Если вам нужна дополнительная информация, пожалуйста, спросите:)