sql >> Database >  >> RDS >> Oracle

(Oracle SQL) Een unieke beperkingsfout opvangen

U moet een geneste PL/SQL . definiëren Uitzondering blokkeren en afhandelen in UITZONDERING BLOCK als WHEN DUP_VAL_ON_INDEX ...

Het mag NIET wees 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;
/



  1. Wat heeft het voor zin om AS-sleutelwoord in SQL te gebruiken als aliasing zonder dit kan?

  2. MySQL operationele hiërarchische gegevens

  3. invoegen in... selecteer ... met subquery of zonder kolomvolgorde

  4. Moet ik NOT IN, OUTER APPLY, LEFT OUTER JOIN, EXCEPT of NOT EXISTS gebruiken?