2013-06-27 6 views
6

오라클 11g에서 테이블을 디자인하는 방법 나중에 오라클 12c의 "Temporal validity" 기능과 호환 가능합니까?Oracle 12c에서 임시 유효성을 사용하는 방법은 무엇입니까?

오라클 (12c)의 온라인 설명서 (http://docs.oracle.com/cd/E16655_01/server.121/e17209/statements_7002.htm#CJADHJHB)

ALTER TABLE my_table ADD (PERIOD FOR my_valid_time (my_valid_start, my_valid_end)); 

그래서 하나가 11g에 이미 좋은 오래된 VALID_FROM 및 valid_till 열을 사용하고 적절한로 강화 할 수 SQL 언어 가이드 기계가 시간 유효성을 정의하는 방법을 지정합니다 12c의 기간, 맞습니까?

"항상 이후"와 "영원히"고정 된 마법 날짜를 사용하는 데이터베이스를 상속했습니다 (예 : DATE '1900-01-01'DATE '3999-12-31'). 분명히 12c는 대신 NULL을 사용합니다.

고정 마법 날짜를 사용하지 않고 NULL 날짜로 전환해야합니까?

+1

위대한 질문! 나는 아직 12c를 아직 사용하지 않았으므로 대답 대신에 주석을 추가한다. Temporarl Validity 기능에 대한 초기 읽기 기능은 NULL이 더 좋지만 마법 날짜도 올바르게 작동합니다. 그들은 오라클의 CBO에 다소 간섭 할 수 있으며 질의 계획이 좋지 않을 수 있습니다.하지만 항상 어쨌든 마법의 가치가있는 경우가 있습니다. 12c의 새로운 히스토그램은이를 완화하는 데 도움이 될 수 있습니다. –

답변

3

예, 시간적 효력을 가능하게합니다 (문서의 ALTER 표 섹션을 참조하십시오 http://docs.oracle.com/cd/E16655_01/server.121/e17209/statements_3001.htm#CJAEGCFI)하는 12C의 테이블을 변경 할 수 있습니다

그것은 변환하여 작동을하여 어디에 절 "< ="와 "> 또는 null"조항이므로 원하지 않으면 고정 날짜를 변경할 필요가 없습니다.

톰 카이트는 그냥 좋군요 예제와 함께이 오늘에 대해 자신의 블로그에 게시 : 12C에 http://tkyte.blogspot.com/2013/07/12c-flashforward-flashback-or-see-it-as.html

+0

+1 톰 키테 링크에 대해, 정말 잘 설명했다. 그리고 당신 말이 맞습니다. 'NULL'과'1900'은 모두 작동 할 것입니다. –

+1

범위가 겹치지 않도록이 기간에 대한 제약 조건을 정의하는 방법이 있습니까? –