Sollte so funktionieren.
Der 1. Exists schränkt ja zusätzlich auf and "MaSts = '1'" ein.
Der Not Exists prüft nur die tatsächliche Nicht-Existenz des Schlüssel.

Wenn du das ganze per Transaktion machen könntest, hast du immer die Chance, das Ergebnis vor einem Commit zu prüfen und wenn es nicht stimmt, das Programm abzubrechen um einen Rollback durchzuführen. Per Debugger könntest du auch SQLCODE auf -1 setzen um im Programm wahlweise Commit/Rollback zu machen.
Transaktionen sind auch zum Testen außerordentlich hilfreich.