DELETE from dbo.T_LIAV_AGENT_STATE_APPROVAL SAP
WHERE EXISTS (SELECT UNIQUE 1 FROM MCS_SYNC_STATE_APPR APP
inner join MCS_SYNC_NAME SN on SN.SE_NAME_ID = APP.SE_NAME_ID
and SN.ACTION in('U','S')
Where APP.SE_name_id = SAP.AV_NAME_ID
and APP.SYNC_INSTANCE_ID = param_inst_ID);
COMMIT;
INSERT INTO dbo.T_LIAV_AGENT_STATE_APPROVAL
SELECT UNIQUE
APP.SE_NAME_ID AS AV_NAME_ID,
APP.STATE AS AV_STATE,
APP.APPROVAL_TYPE AS AV_APPROVAL_TYPE,
APP.START_DATE AS AV_START_DATE,
APP.END_DATE AS AV_END_DATE,
APP.APPOINTED AS AV_APPOINTED,
APP.RENEWAL_DATE AS AV_RENEWAL_DATE,
APP.LICENSE AS AV_LICENSE,
COMPANY_NAME_ID as AV_COMPANY_CODE,
SYSDATE AS TSTAMP,
SYNC_USER_NAME_ID AS AV_FIRST_USER_ID,
SYSDATE AS AV_FIRST_DATE,
NULL AS AV_LAST_USER_ID,
NULL AS AV_LAST_DATE
FROM MCS_SYNC_STATE_APPR APP
WHERE exists (select 1 from t_liag_agent AG
where AG.ag_name_id = APP.SE_NAME_ID)
and APP.SYNC_INSTANCE_ID = param_inst_ID;
여기에 SQL 부분이 있으며 코드에서 디버그 할 때 ORA-00001: unique constraint primary key violated
오류가 발생합니다. T_LIAV_AGENT_STATE_APPROVAL에서 ... 그리고 이것들은 기본 키 제약이 AV_NAME_ID, AV_STATE에서 릴랙스하는 두 개의 칼럼입니다.ORA-00001 : 고유 제약 조건 기본 키가 위반되었습니다.
저에게 중복되는 데이터는 없습니다 ... 다른 이유가 있습니까?
"* 나를 따라 중복 데이터가없는 *을"-하지만 오라클은 중복 된 데이터와 I가 생각 여기 오라클을 신뢰합니다. –
하나의 이유는'SYSDATE'를 포함하여 여러 컬럼에 대해 'UNIQUE'를 가지고 있기 때문입니다.'00 : 00 : 00'에 시간 요소를 모두 무효화하려면'TRUNC (SYSDATE) '시도하십시오. –
@MaheswaranRavisankar SQL 문의 모든 SYSDATE가 해결됩니다 정확히 같은 시간에. 비슷한 질문 [내 대답] (http://stackoverflow.com/questions/7954509/sysdate-difference)을 참조하십시오. –