既存の非テンポラル テーブルのコピーとしてvalid-timeテーブルを作成するには、CREATE TABLE … AS (CREATE TABLEのCopy Table形式)を使用します。AS句には、有効時間を含むテーブルを返すテンポラル問合わせを指定します。
例: 非テンポラル テーブルのコピーとしてvalid-timeテーブルを作成
次の非テンポラル テーブルがあるとします。
CREATE TABLE Policy_NT ( Policy_ID INTEGER, Customer_ID INTEGER, Policy_Type CHAR(2) NOT NULL, Policy_Details CHAR(40) ) PRIMARY INDEX(Policy_ID);
valid-timeテーブルとしてPolicy_NTテーブルのコピーを作成するには、CREATE TABLEのAS句でnonsequenced問合わせを使用します。SELECTには、有効時間の適用期間を修飾子として指定します。これにより生成されるvalid-timeテーブルは、各行の有効期間が問合わせに使用した適用期間に設定されます。
CREATE MULTISET TABLE Policy( Policy_ID, Customer_ID, Policy_Type, Policy_Details, Validity ) AS ( NONSEQUENCED VALIDTIME PERIOD '(2009-01-01, UNTIL_CHANGED)' SELECT * FROM Policy_NT) WITH DATA PRIMARY INDEX(Policy_ID);
生成されるPolicyテーブルには、Validityという名前のvalid-time列が含まれます。
SHOW TABLE Policy; CREATE MULTISET TABLE Policy ,NO FALLBACK , NO BEFORE JOURNAL, NO AFTER JOURNAL, CHECKSUM = DEFAULT, DEFAULT MERGEBLOCKRATIO ( Policy_ID INTEGER, Customer_ID INTEGER, Policy_Type CHAR(2) CHARACTER SET LATIN NOT CASESPECIFIC, Policy_Details CHAR(40) CHARACTER SET LATIN NOT CASESPECIFIC, Validity PERIOD(DATE) AS VALIDTIME) PRIMARY INDEX ( Policy_ID );