Oracle error handling strategy
In my experience it's slightly faster to let oracle check it and throw an excpetion if the constraint is violated. If you want to do something special when that happens, you can catch the exception and handle it.

For instance:

EXCEPTION
      WHEN DUP_VAL_ON_INDEX
      THEN
         UPDATE ...