Capturing fehlgeschlagene INSERT-Werte

Betrachten Sie die folgenden INSERT:

INSERT INTO CUSTOMERS (ID, NAME, AGE) VALUES (100, 'JOHN', 32), (101, 'JIM', 35), (102, 'SALLY', 21) 

Unter der Annahme, dass ein Kundendatensatz bereits für ID 101 existiert, schlägt diese INSERT aufgrund einer primären Schlüsselverletzung fehl.
Gibt es eine Möglichkeit, die gültigen Zeilen einzufügen, während die fehlgeschlagene Zeile für die spätere Verarbeitung erfasst wird?

Ich denke, dass ich vielleicht einen Cursor verwenden muss, um INSERTs zu verarbeiten, oder die 'MERGE' DML-statement zu INSERT unmatched id Zeilen zu verwenden, und OUTPUT übereinstimmte Zeilen zu einer anderen Tabelle.

Wie geschrieben, gibt es keine Möglichkeit, nur die gültigen Zeilen in die database eingefügt zu haben. Die Abfrage ist eine implizite Transaktion und wird begangen, wenn erfolgreich oder zurückgesetzt im Falle eines Fehlers.

Um das Verhalten zu erreichen, das Sie suchen, benötigen Sie 4 separate INSERT-statementen.

Wenn Sie möchten, dass die Einfügung wie geschrieben arbeitet, werden Sie irgendeine Art von anstelle von Insert-Trigger benötigen, der die INSERTED-Tabelle untersucht und die datasätze einfügt, die noch nicht in der eigentlichen Tabelle vorhanden sind und fügt die doppelten Zeilen irgendwo anders ein .