Witam.
Pracuję na MS SQL Server 2014.
Mam założoną tabelę, na której założone są triggery INSTEAD OF oraz FOR. Gdy wykonuję insert'a do tej tabeli więcej niż jednego rekordu na raz to chciałbym otrzymać autoincrementy dodanych wierszy.
Zazwyczaj robię to tak:
INSERT INTO tabela
(pole1, pole2, poleTmp)
OUTPUT inserted.id, inserted.warTmp INTO #tempIds(idNew, idOld)
SELECT war1, war2, warTmp
FROM ...
Gdzie pole [id] to właśnie autoincrement tabeli.
Niestety po takim insercie pole idNew tabeli #tempIds jest wypełniane zerami. Jeżeli wyłączę triggery to wszystko działa ok. Niestety triggery są mi potrzebne więc nie mogę ich wyłączyć.
Czy jest jakiś sposób aby otrzymać autoincrementy dodanych wierszy.
Potrzebne mi są one do powiazania ich z rekordami źródłowymi (przekazywanymi w polu "poleTmp"). Pojedyncze dodawanie rekordów w pętli nie wchodzi w grę (zależy mi na dużej wydajności, prędkości wykonania zapytania).
Odczytywanie wierszy po dodaniu na podstawie maksymalnego autoincrementa z przed zapytania też nie ma zastosowania gdyż baza będzie pracować na wielu stanowiskach i w jednym czasie może być wykonanych kilka takich insertów z różnych stanowisk.
Czy da się to jakoś rozwiązać nie zabijając zapytania?