2013-06-27 6 views
6

Oracle 11gでテーブルを設計して後で新しい「時間的有効性」フィーチャーと互換性を持たせるにはどうすればよいですか?Oracle 12cで一時的な有効性を使用するには?

のOracle 12cのオンラインドキュメントだから1は、すでに11グラムで、古き良きVALID_FROMとvalid_till列を使用し、適切にそれらを牛肉可能性がSQL言語ガイド(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)); 

inthe時間的妥当性を定義する方法を指定します12cの期間、そうですか?

"いつも"以来の固定魔法の日付を使用するデータベース、例えばDATE '1900-01-01'DATE '3999-12-31'を継承しました。明らかに、12cは代わりにNULLを使用します。

固定魔法の日付を使用して放棄し、NULLの日付に切り替える必要がありますか?

+1

グレート質問!まだ12cをまだ使用していないので、答えの代わりにコメントを追加するだけです。 Temporarl Validity機能についての私の最初の読書は、NULLsが望ましいかもしれないが、魔法の日付も同様にうまくいくということです。これらはOracleのCBOにある程度干渉する可能性があり、問合せプランが貧弱になる可能性がありますが、それは常に魔法の価値を伴うケースです。 12cの新しいヒストグラムがこれを軽減するために何らかの方法で使用される可能性があります。 –

答えて

3

はい、あなたは時間的妥当性を可能にするために、12cにテーブルを変更することができるようになります(ドキュメントのALTER TABLE文セクションを参照してください。http://docs.oracle.com/cd/E16655_01/server.121/e17209/statements_3001.htm#CJAEGCFI)を

それは「< =」にあなたのwhere句を変換することによって動作し、 ">またはnull"句であるため、したくない場合は固定日付を変更する必要はありません。

トム・カイトは、単にいくつかのスチールハーフメッシュマスクの例で、この今日は彼のブログに掲載:12C上 http://tkyte.blogspot.com/2013/07/12c-flashforward-flashback-or-see-it-as.html

+0

+1、Tom Kyteのリンクについては、本当によく説明されています。もちろん、あなたはもちろんですが、「NULL」と「1900」の両方が動作します。それを指摘してくれてありがとう! –

+1

範囲が重複しないようにこれらの期間に制約を定義する方法はありますか? –

関連する問題