이같은 경우 대부분
인터넷 검색하면 하기와 같이 설명되어 있다.
컬럼이 분명 Not null제약조건이 걸려있을 겁니다.
이는 TOAD등에서 schema browser로 보시던가, 아래 쿼리로 확인하세요.
SELECT *
FROM all_tab_cols
WHERE table_name = '테이블명'
결과 중 해당컬럼명의 NULLABLE컬럼에 Y가 있어야 Null값을 허용하는 겁니다.
아마도 N으로 되어있을 것이고 이 컬럼은 Null값을 허용하지 않으므로 이 제약조건이 있는 한 어떤 방법으로도 Null을 입력할 수 없습니다.
위와 같이 그럴수도 있지만.
내가 보기엔 대부분 조인문에서 서로 레코드수가
틀려서 그런거 같다. 예를 들어.
UPDATE eut_org_user a
SET org_class2 =
(SELECT org_class2
FROM (
SELECT a.user_id, b.org_class2, b.org_class3 FROM eut_org_user a, eut_org b
where a.org_name = b.org_name
AND a.org_class1 = 'S460'
) b
WHERE a.user_id = b.user_id)
Where a.org_class1 = 'S460'
위와 같은 쿼리에서 ORA-01407 났을때 컬럼에 Null값 허용하는지 보다.
빨간색부분 쿼리를 하나 실행시키시고,
파란색부분 하기와 같이 쿼리를 실행시켜서
select * from eut_org_user
Where a.org_class1 = 'S460'
두개의 쿼리 레코드수를 비교해서 안맞을경우에도 ORA-01407 에러가 발생한다.
대부분 이런에러가 난다고 하는분은 거의 이런경우라 생각 되네요^^
'개발 > ORCLE' 카테고리의 다른 글
오라클 CASE문 (0) | 2009.07.20 |
---|---|
오라클 floor (0) | 2009.03.05 |
DBMS_JOB의 활용 (0) | 2009.03.05 |
오라클 INTERVAL (0) | 2009.03.05 |
오라클 MONTHS_BETWEEN, ADD_MONTHS SYSDATE, TODAY, LAST_DAY, NEXT_DAY 날짜함수 (0) | 2009.03.05 |