Ich habe eine Abfrage, wo ich "Batch" Zeilen in eine Tabelle mit einem Primärschlüssel ohne Identität einfügen müssen.
--TableA
--PK int (Primary key, no-identity)
--CustNo int
INSERT INTO TableA (PK,CustNo)
SELECT (SELECT MAX(PK)+1 AS PK FROM TableA), CustNo
FROM Customers
(vereinfachtes Beispiel - bitte keine Kommentare zu möglichen Gleichzeitigkeitsproblemen :-))
Das Problem ist, dass es nicht die PK "für jede" verarbeitete Zeile inkrementiert, und ich bekomme eine Primärschlüsselverletzung.
Ich weiß, wie man es mit einem Cursor/While-Schleife zu tun, aber ich möchte, dass zu vermeiden, und lösen Sie es in einer Set-basierte Art von Weise, wenn das überhaupt möglich ist?
(mit SQL Server 2008 Standard)