ORA-01451: column to be modified to NULL cannot be modified to NULL 오류는 NULL이 될 수 없는 컬럼을 NULL로 수정하려고 시도할 때 발생합니다. 예시 자료는 다음과 같습니다.
ALTER TABLE USER_NAME.TABLE_NAME MODIFY COLUMN_NAME NULL;
ERROR at line 1:
ORA-01451: column to be modified to NULL cannot be modified to NULL
오류 발생 원인은 크게 2가지로 예상할 수 있습니다.
- 해당 컬럼이 이미 NULL을 허용하는 경우, 불필요한 시도로 오류가 발생합니다.
- 체크 또는 기본키 제약조건에 해당하는 컬럼으로 NULL로 설정할 수 없는 컬럼을 NULL로 수정하려는 시도를 한 경우에 발생합니다.
첫 번째의 경우에는 별도의 조치가 필요 없습니다. 두 번째의 경우에는 정말로 NULL 설정이 필요한지 검토를 하여야 합니다. 체크 제약조건이야 명령어 한 줄로 정리할 수 있지만, 기본키에 해당하는 컬럼을 제외하는 경우에는 기본키를 포함하여 연쇄적인 객체의 문제 발생 여부를 파악해야 하기 때문입니다.
체크 제약조건 조회 및 드랍 방법 예시입니다. 이번 주제에서 예시를 든 것은 NULL인 컬럼을 다시 NULL로 설정하는 상황을 고려한 것이라 실제로 해결을 위해 필요한 내용은 아닙니다.
--제약조건 삭제
ALTER TABLE USER_NAME.TABLE_NAME DROP CONSTRAINT SYS_C000001;
--제약조건 조회
SELECT CONSTRAINT_NAME, SEARCH_CONDITION
FROM ALL_CONSTRAINTS
WHERE OWNER = 'USER_NAME'
AND TABLE_NAME = 'TABLE_NAME';