sourcetip

ORA-01440: 정밀도나 축척을 줄이기 위해서는 수정할 열이 비어 있어야 함

fileupload 2023. 9. 25. 22:54
반응형

ORA-01440: 정밀도나 축척을 줄이기 위해서는 수정할 열이 비어 있어야 함

제품이라는 오라클 테이블이 있습니다.다음과 같은 유형의 ID 열이 있습니다.NUMBER.

유형을 다음으로 변경하고 싶습니다.Number(20, 0)하지만 제게 이런 오류를 주고 있습니다.

ORA-01440: column to be modified must be empty to decrease precision or scale

그래서 이 대본을 사용했습니다.

alter table Products add ID_TEMP NUMBER(20,0);

update Products set ID_TEMP = ID;

update Products set ID = NULL;

alter table Products modify ID NUMBER(20,0);

update Products set ID = ID_TEMP;

alter table Products drop column ID_TEMP;

하지만 그것은 불평합니다.

cannot update ID to NULL

무효가 될 수 없는 기본 키이기 때문에 합리적입니다.

데이터 유형을 다음에서 변경하는 방법Number로.Number(20, 0)?

ID가 Primary KEY인지 확인합니다.yes인 경우 nullable로 수정하거나 NULL 값을 삽입할 수 없습니다.

그래서 'UPDATE ID_TEMP WITH ID WITH ID'를 한 후 다음과 같이 하는 것이 좋습니다.

ID 열과 기본 키 제약 조건을 삭제하고 열 이름을 변경합니다.TEMP TO ID 그런 다음 ID 열을 기본 키로 설정합니다.아래 예:

 ALTER TABLE Products ADD COLUMN ID_TEMP NUMBER(20,0);
 UPDATE PRODUCTS SET ID_TEMP = ID;
 ALTER TABLE PRODUCTS DROP COLUMN ID;
 ALTER TABLE PRODUCTS DROP CONSTRAINT ID_PK;
 RENAME COLUMN PRODUCTS.ID_TEMP TO ID;
 ALTER TABLE PRODUCTS ADD CONSTRAINT ID_PK PRIMARY KEY (ID);

언급URL : https://stackoverflow.com/questions/23802066/ora-01440-column-to-be-modified-must-be-empty-to-decrease-precision-or-scale

반응형