Als Teil einer MERGEAbfrage, die ich ausführen möchte, möchte ich zur Laufzeit bestätigen, dass eine bestimmte Bedingung erfüllt ist. Wenn ein MERGEMatch gefunden wird, möchte ich eine bestimmte Spalte aktualisieren und die folgende Logik ausführen lassen:
- Wenn die Zielspalte lautet
NULL, schreiben Sie den Quellwert - Wenn das Ziel ist
NOT NULL, behaupten Sie, dass Ziel und Quelle identisch sind
Ich erwarte, dass die beiden Werte in Fall 2 immer identisch sind, aber ich habe möglicherweise einen Fehler gemacht (habe einen Fehler). In diesem Fall möchte ich die Anweisung zum Absturz bringen und meine App den Fehler melden lassen. Dies ist eine sehr seltene Fehlerbedingung, die im Rahmen der normalen Verarbeitung nicht auftreten kann.
Also dachte ich, ich könnte eine Division durch Null missbrauchen , um einen Absturz auszulösen:
MERGE
...
WHEN MATCHED BY TARGET THEN UPDATE SET
TargetCol = CASE
WHEN TargetCol IS NULL THEN SourceCol
WHEN TargetCol = SourceCol THEN SourceCol
ELSE 0/0 END --crash!
Funktioniert das zuverlässig? Gibt es einen Grund, warum dies nicht getan werden sollte?
CHECKdie Zieltabelle OUTPUTeinzuschränken? Das sollte die Aussage in die Luft jagen.

RAISEERRORkönnte eine gute Wahl sein, wenn Sie innerhalb einer Abfrage behaupten möchten.