Erfassen Sie Werte, die DUP_VAL_ON_INDEX auslösen
In diesem Beispiel (DUP_VAL_ON_INDEX Ausnahme) Ist es möglich, die Werte zu erfassen, die die Einschränkung verletzt haben, damit sie protokolliert werden können?
Wäre der Ansatz der gleiche, wenn von einer Masseneinfügung mehrere Verstöße generiert würden?
BEGIN
-- want to capture '01' and '02'
INSERT INTO Employee(ID)
SELECT ID
FROM (
SELECT '01' ID FROM DUAL
UNION
SELECT '02' ID FROM DUAL
);
EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN
-- log values here
DBMS_OUTPUT.PUT_LINE('Duplicate value on an index');
END;