Как проверить, вставлено ли что-нибудь с помощью INSERT SELECT (T-SQL) - PullRequest
3 голосов
/ 13 июля 2010

У меня есть оператор вставки:

insert into parentTbl
select firstId, secondId, thirdId, dateTm
from importTbl
where codeId = @codeIdParam

Мне нужно надежно выяснить, вставлена ​​ли вообще эта вставка.В идеале я хотел бы установить переменную @insertedCount равной количеству вставленных строк, даже если она равна 0.

Я сейчас использую:

set @insertedCount = @@ROWCOUNT

Но это толькополучить последнее количество вставленных строк - проблема в том, что если оператор INSERT SELECT ничего не вставил, @@ROWCOUNT не возвращает 0.

1 Ответ

2 голосов
/ 13 июля 2010

Вы можете попробовать использовать предложение OUTPUT, которое будет возвращать одну строку на вставленную строку;что-то вроде:

insert into parentTbl
output inserted.firstId
select firstId, secondId, thirdId, dateTm
from importTbl
where codeId = @codeIdParam

Это даст вам набор результатов с firstId с каждой вставленной строки, на который вы затем можете рассчитывать.
Одним из способов будет output into atable-var, а затем выполните select count(*) from @tableVar в конце, чтобы получить ваш счетчик вставок.

...