As part of a
MERGE query that I want to run I'd like to assert at runtime that a certain condition holds. When a
MERGE-match is found I'd like to update a certain column and have the following logic executed:
- If the target column is
NULL, write the source value
- If the target is
NOT NULL, assert that target and source are identical
I expect that the two values are always identical in case 2 but I might have made a mistake (have a bug). When that happens I'd like to crash the statement and let my app report the error. This is a very rare error condition, not something that can happen as part of usual processing.
So I was thinking that I could abuse a divide-by-zero exception to trigger a crash:
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!
Will this work reliably? Is there a reason this should not be done?