Oracle
 sql >> Datenbank >  >> RDS >> Oracle

(Oracle SQL) Abfangen eines Unique-Constraint-Fehlers

Sie müssen ein verschachteltes PL/SQL definieren Ausnahme in EXCEPTION blockieren und behandeln BLOCK als WHEN DUP_VAL_ON_INDEX ...

Es sollte NICHT sei IF DUP_VAL_ON_INDEX

Declare
violation_of_constraint EXCEPTION;
BEGIN
  BEGIN
  -- (A FEW INSERTS HERE: A, B, C)
  SAVEPOINT X;
  -- (ANOTHER INSERT HERE: D)
  EXCEPTION 
  WHEN DUP_VAL_ON_INDEX THEN
    ROLLBACK TO X;
    COMMIT;
    RAISE violation_of_constraint;
  END;
EXCEPTION
WHEN violation_of_constraint THEN
DBMS_OUTPUT.PUT_LINE('Value already exists');
COMMIT;
END;
/