그래서 pp_terminal 테이블의 uemte_id 열에서 mm_chip 테이블의 uemte_id 열 (시작시 null)로 값을 복사하기 위해 대량 업데이트를 시도했습니다. 이 두 테이블은 common.This에는 열이 나는 무엇을 사용하지 있습니다한 테이블에서 다른 테이블로 일괄 업데이트
declare
type ue_tab is table of
pp_terminal.uemte_id%type;
ue_name ue_tab;
cursor c1 is select uemte_id from pp_terminal;
begin
open c1;
fetch c1 bulk collect into ue_name;
close c1;
-- bulk insert
forall indx in ue_name.first..ue_name.last
update mm_chip set uemte_id = ue_name(indx);
end;
/
그리고 이것은 내가 오류 메시지입니다 :
Error report:
ORA-00001: unique constraint (DPOWNERA.IX_AK7_MM_CHIP) violated
ORA-06512: at line 13
00001. 00000 - "unique constraint (%s.%s) violated"
*Cause: An UPDATE or INSERT statement attempted to insert a duplicate key.
For Trusted Oracle configured in DBMS MAC mode, you may see
this message if a duplicate entry exists at a different level.
*Action: Either remove the unique restriction or do not insert the key.
당신이 명백한 misstakes를 볼 수 있나요?
예, 'mm_chip'을 (를) 업데이트 할 때 고유 제한 조건을 위반합니다. 'uemte_id'를 포함하는 제약 조건이 있다고 가정하고 있습니까? – Ben
예, 그렇습니다.하지만 pp_terminal의 모든 uemte_ids가 고유하고 mm_chip의 uemte_ids가 null이기 때문에 어떻게 해독했는지 알지 못합니다. – Baklavaman
Jim Hudson이 방금 여러분에게 좋은 설명을 주셨습니다. 추가로 PL/SQL 블록에서 커서를 커밋하거나 닫지 마십시오. 이것은 복사 및 붙여 넣기 문제 일 수도 있지만 그렇지 않은 경우 두 가지 작업을 수행하는 것이 좋습니다. – Ben