Search code examples
postgresqlexceptiondatabase-migrationplpgsql

oracle DUP_VAL_ON_INDEX for PostgreSQL?


is there any Postgres replacement for exception DUP_VAL_ON_INDEX? I'm migrating a database from Oracle to PostgreSQL.

my query example:

EXCEPTION
            WHEN DUP_VAL_ON_INDEX
            THEN
               BEGIN
                  UPDATE BTPN_INS_PEOPLE_EXT
                     SET EFFECTIVE_END_DATE = NULL,
                         REGISTER_DATE = l_dMakerDate,
                         PASSPORT_NO = l_vPassportNo,
                         FAMILY_CARD_NO = l_vFamilyCardNo,
                         UPDATE_BY = i_vUSER_ID,
                         UPDATE_ON = SYSDATE,
                         RECORD_FLAG = 'U'
                   WHERE     PERSON_ID = l_nMainPersonId
                         AND EFFECTIVE_START_DATE = TRUNC (SYSDATE);

                  SELECT INTERNALID
                    INTO l_nPeopleExtId
                    FROM BTPN_INS_PEOPLE_EXT
                   WHERE     PERSON_ID = l_nMainPersonId
                         AND EFFECTIVE_START_DATE = TRUNC (SYSDATE)
                         AND EFFECTIVE_END_DATE IS NULL
                         AND ROWNUM = 1;

Solution

  • As already mentioned in the comment,

    The replacement of the DUP_VAL_ON_INDEX (In oracle) is unique_violation in PostgreSQL.

    It is mentioned in the Error codes of the PostgreSQL documentation here