문제

이 테이블은 Oracle DB에 3 개의 데이터 열에 정의 된 기본 키가 있습니다. 해당 열에 대한 중복 데이터가있는 행을 허용하기 위해 기본 키 제약 조건을 삭제하고 새 열 'ID'를 만들어 이러한 행에 자동 증가 된 정수 ID를 포함합니다. 테이블에 추가 된 새 행에 대한 자동 증가 ID를 추가하기 위해 시퀀스를 만들고 트리거하는 방법을 알고 있지만 이미 테이블에있는 모든 행에 고유 한 ID를 추가하기 위해 PL/SQL 문을 작성할 수 있습니까?

도움이 되었습니까?

해결책

시퀀스를 만들면 :

update mytable
set id = mysequence.nextval;

다른 팁

시퀀스에 정수를 사용하는 경우 Rownum으로 ID를 업데이트 할 수 있습니다. 예를 들어

update
table
set id = rownum

그런 다음 시퀀스를 다음 유효한 ID로 재설정해야합니다.

이것이 당신이 필요한 것입니까?

UPDATE your_table
   SET id = your_seq.nextval;

이것은 당신이 당신의 기본 키가 어떤 순서에 있는지 신경 쓰지 않는다고 가정합니다.

먼저 PCTfree를 확인해야합니다 ... 모든 행이 더 길어질 수있는 충분한 공간이 있습니까?

매우 작은 PCTFree를 선택했거나 데이터에 많은 Lenght 증가 업데이트가있는 경우 모든 행을 업데이트로 수행하기 시작할 수 있습니다.

CTA로서 이것을하는 것이 거의 확실합니다.

T1에서 테이블 T2를 선택한 seq.nextVal, t1.*로 만들어냅니다.

DROP T1

T2를 T1로 바꾸십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top