Oracle DUP_VAL_ON_INDEX 用于 PostgreSQL?

oracle DUP_VAL_ON_INDEX for PostgreSQL?

是否有任何 Postgres 替代异常 DUP_VAL_ON_INDEX?我正在将数据库从 Oracle 迁移到 PostgreSQL。

我的查询示例:

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;

如评论中所述,

在 PostgreSQL 中 DUP_VAL_ON_INDEX(在 oracle 中)的替换是 unique_violation

在 PostgreSQL 文档的错误代码中提到了它 here