The New Home of Oracle-wiki.net

All things oracle...

A website for IT Professionals involved with Oracle database.

LinkLinkedIn

CHANGE_DUPKEY_ERROR_INDEX

CHANGE_DUPKEY_ERROR_INDEX Hint Description

The CHANGE_DUPKEY_ERROR_INDEX hint in Oracle is used to modify the error message when a unique constraint violation occurs. Instead of the generic ORA-00001 error, it raises a more specific ORA-38911 error, providing details about the violated index. 

IMPORTANT - The documentation states that following 

"This hint applies to INSERT, UPDATE operations. If you specify an index, then the index must exist and be unique. If you specify a column list instead of an index, then a unique index whose columns match the specified columns in number and order must exist." 

However, personal testing on 23ai suggests this is a documentation error, as the change error message only gets reported on an insert.  The update continues to report an ORA-0001.  See below


Example with Insert

SQL> INSERT INTO MyTab1 (MyCol1) VALUES (123)
SQL> /

INSERT INTO MyTab1 (MyCol1) VALUES(123)
*
ERROR at line 1:
ORA-00001: unique constraint (MyInd1) violated


SQL>INSERT /*+ CHANGE_DUPKEY_ERROR_INDEX(MyTab1,MyInd1) */ INTO MyTab1(MyCol1) VALUES(123)
SQL>/

INSERT /*+ CHANGE_DUPKEY_ERROR_INDEX(MyTab1,MyInd1) */
*
ERROR at line 1:
ORA-38911: unique constraint (MyInd1) violated


Example with Update

SQL> UPDATE /*+ CHANGE_DUPKEY_ERROR_INDEX(MyTab1,MyInd1) */  MyTab1 SET MyCol1=1 WHERE MyCol1=2
SQL> /

UPDATE MyTab1 SET MyCol1=1 WHERE MyCol1=2
*
ERROR at line 1:
ORA-00001: unique constraint (MyInd1) violated


Published on 

Published 6th December 2024