バイテンポラル表 (bitemporal table) の作成
システム・ベースの履歴情報とアプリケーション期間情報の両方を保守するバイテンポラル表 (bitemporal table) を作成できます。
このタスクについて
システム期間を表に追加してシステム・ベースの履歴情報を保守し、アプリケーション期間を表に追加してアプリケーション期間情報を保守します。
システム期間データ バージョン管理を使用するテーブルに適用される制限の一覧については、 「システム期間データ バージョン管理の制限」を参照してください。
プロシージャー
バイテンポラル表 (bitemporal table) を作成し、表のシステム期間のデータのバージョン管理を定義するには、次の手順で行います。
- SYSTEM_TIME 文節と BUSINESS_TIME 文節の両方を指定して CREATE TABLE ステートメントを発行する。履歴テーブルの要件に関する詳細は、「システム期間のテンポラルのテーブルの作成」 および 「アプリケーション期間のテンポラルのテーブルの作成」 を参照してください。
- CREATE TABLE ステートメントを発行して、バイテンポラル表 (bitemporal table) から古い行を受け取る履歴表を作成する。
- USE HISTORY TABLE 文節を指定した ALTER TABLE ADD VERSIONING ステートメントを発行して、システム期間のデータのバージョン管理を定義し、バイテンポラル表 (bitemporal table) と履歴表との間にリンクを確立する。
例
以下の例では、バイテンポラル表 (bitemporal table) および履歴表を作成し、システム期間のデータのバージョン管理を定義する方法を示します。
この例は、バイテンポラル表を作成するための SYSTEM_TIME および BUSINESS_TIME 文節を使用した CREATE TABLE ステートメントを示しています。
CREATE TABLE policy_info
(policy_id CHAR(4) NOT NULL,
coverage INT NOT NULL,
bus_start DATE NOT NULL,
bus_end DATE NOT NULL,
sys_start TIMESTAMP(12) NOT NULL GENERATED ALWAYS AS ROW BEGIN,
sys_end TIMESTAMP(12) NOT NULL GENERATED ALWAYS AS ROW END,
create_id TIMESTAMP(12) GENERATED ALWAYS AS TRANSACTION START ID,
PERIOD BUSINESS_TIME(bus_start, bus_end),
PERIOD SYSTEM_TIME(sys_start, sys_end));以下の例では、履歴表を作成する CREATE TABLE ステートメントを示します。
CREATE TABLE hist_policy_info
(policy_id CHAR(4) NOT NULL,
coverage INT NOT NULL,
bus_start DATE NOT NULL,
bus_end DATE NOT NULL,
sys_start TIMESTAMP(12) NOT NULL,
sys_end TIMESTAMP(12) NOT NULL,
create_id TIMESTAMP(12));この例では、バイテンポラル表 (bitemporal table) と履歴表との間にリンクを確立してシステム期間のデータのバージョン管理を有効化する USE HISTORY TABLE 文節を指定した ALTER TABLE ADD VERSIONING ステートメントを示します。 また、バイテンポラル表 (bitemporal table) にユニーク索引を追加します。
ALTER TABLE policy_info
ADD VERSIONING USE HISTORY TABLE hist_policy_info;
CREATE UNIQUE INDEX ix_policy
ON policy_info (policy_id, BUSINESS_TIME WITHOUT OVERLAPS);