수고하십니다.
테이블 그려보다 궁금한 점이 있어 질문드립니다.
with tbl as(
select 'AA' CODE , '2010' START_YEAR, '2011' END_YEAR, 'ETC VALUE' ETC FROM DUAL UNION ALL
select 'AA' CODE , '2012' START_YEAR, '2013' END_YEAR, 'ETC VALUE' ETC FROM DUAL UNION ALL
select 'AA' CODE , '2014' START_YEAR, '2015' END_YEAR, 'ETC VALUE' ETC FROM DUAL UNION ALL
select 'BB' CODE , '2013' START_YEAR, '2015' END_YEAR, 'ETC VALUE' ETC FROM DUAL UNION ALL
select 'CC' CODE , '2013' START_YEAR, '2015' END_YEAR, 'ETC VALUE' ETC FROM DUAL
)SELECT * FROM TBL
위와 같은 테이블에서 CODE,
START_YEAR ~ END_YEAR (범위)를 제약조건으로 할 수 있을까요?
예를 들어 위와 같은 상황에서
INSERT INTO TBL (CODE, START_YEAR, END_YEAR, ETC ) VALUES( 'BB', '2012' , '2014' , 'ETC' ) ;
INSERT INTO TBL (CODE, START_YEAR, END_YEAR, ETC ) VALUES( 'BB', '2014' , '2016' , 'ETC' ) ;
INSERT INTO TBL (CODE, START_YEAR, END_YEAR, ETC ) VALUES( 'BB', '2013' , '2013' , 'ETC' ) ;
이런 자료들이 안들어가는 제약입니다.
모두 BB 의 범위인 2013 ~ 2015년도 범위를 침해(??) 하는 년도 정보를 입력할려는 시도입니다. 물론 입력단계에서 체크하고, 입력값을 체크하는 트리거도 해놓을 생각인데요.
명시적으로 알 수 있게 제약조건을 걸 수 있는 방법이 있을까요?
오라클에서 이런 것도 가능할 까요? ㅋ
혹시 가능하다면 알려주시면 감사하겠습니다.
아.. 그리고 추가로..
제약조건과 별개로 ...
PK를 잡아야 할건데요..
이런 경우는 PK를 어떻게 잡아야할까요?
CODE, START_YEAR만 잡으면 되는지..
CODE, START_YEAR, END_YEAR를 잡으면 되는지...
아.. DB는 오라클 10g입니다~~
그럼 즐거운 오후 되셔요..
아.. 금요일 오후였네요.. ㅠㅠ 흑흑 목요일인줄 알고 있었다는..
불금 되시길..