ORA-01451: column to be modified to NULL cannot be modified to NULL (ORA-01451: 열이 이미 NULL로 되어 있습니다)

ORA-01451: column to be modified to NULL cannot be modified to NULL 오류는 NULL이 될 수 없는 컬럼을 NULL로 수정하려고 시도할 때 발생합니다. 예시 자료는 다음과 같습니다.

ORA-01451: column to be modified to NULL cannot be modified to 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';
댓글 쓰기
가져가실 때, 출처 표시 부탁드려요! 감사합니다. 💗