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
是否有任何 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