Ja, das ist generell ein Problem, dass ein Before-Trigger aufgerufen wird, bevor die Constraints wie Unique-Key geprüft werden.
Da man den After-Insert-Buffer ja (falls erlaubt) ändern kann, hat man u.U. die Gelegenheit, fehlende Daten zu ergänzen. Wenn man ein Protokoll schreibt hat dies gewisse Vorteile, da man dort auch Versuche protokollieren kann.
Bei Commitsteuerung sieht es etwas anders aus, da dann der Aufrufer im Fehlerfall einen Rollback durchführen kann.
Ist die Protokolldatei journalisiert und läuft der Trigger und das Protokoll unter Commit, wird auch diese Änderung rükgängig gemacht.

Willst du den After-Insert-Buffer nicht ändern sondern nur andere Tabellen mit ändern, so führe einen After-Insert-Trigger aus. Dann werden erst die Constraints geprüft bevor der Trigger aufgerufen wird.
Du kannst dann allerdings keine Daten des aktuellen Satzes mehr ändern.
Vorsicht ist dann auch unter Commitsteuerung mit ggf. einer eigenen ACTGRP, denn dann kann man beim Zugriff auf denselben Satz Deadlock (mit Satztimeot) provozieren.