ORACLE/ERROR CODE
ORA-01438 : value larger than specified precision allowed for this column
레벨업중
2024. 1. 8. 00:44
ERROR CODE / 설명
소수점 데이터 타입 컬럼에 자리수를 초과하는 데이터를 넣을려는 경우 발생하는 에러
ORA-01438: value larger than specified precision allowed for this column
발생 원인
컬럼 COL2 는 NUMBER(7, 2)로 정수 5자리, 소수점 이하 2자리로 구성되어 있다. 정수 6자리를 저장하다가 에러 발생함
-- [1] TEST 테이블 생성
CREATE TABLE IMSI_TABLE ( col1 number(3) , col2 number(7,2) );
-- [2] TEST 테이블 INSERT 시도
declare
i integer;
begin
INSERT INTO imsi_table ( col1, col2 )
VALUES
(
'1',
100000
);
end;
해결방법
컬럼의 데이터 타입을 변경한다. ( 단, 대용량 테이블인 경우 컬럼 변경 작업 시간이 장시간 소요되고 그 동안 테이블에 LOCK까지 설정되므로 TRANSCATION이 없는 시간대에 작업을 하는 것이 좋다 )
ALTER TABLE IMSI_TABLE MODIFY col2 number(8,2);
정상확인
위 발생 원인 [2] SCRIPT를 재시도하면 데이터가 정상적으로 저장됨