0

ピリオド付きの Oracle テーブルの主キーについて質問があります。

次のような 2 つのテーブルを作成しました。

create table el_temporal_try( -- Parent Table
    id number(10) not null,
    ColumnA varchar(10),
    constraint el_temporal_try_pk primary key (id),
    period for valid_period
);
create table el_temporal_try_son( -- Son Table
    id number(10) not null,
    ColumnA varchar(10),
    parent_id number(10),
    constraint el_temporal_try_FY foreign key (parent_id) references el_temporal_try(id),
    period for valid_period
);

このスクリプトは成功しました。ただし、データの挿入に問題があります。

親テーブルに次の 2 つの挿入ステートメントを実行しました。

1位:声明

insert into el_temporal_try 
(id, columnA,valid_period_start, valid_period_end)
values
(1,'A',sysdate - 10, sysdate - 9);

結果:

1 行挿入されました。

2番目: ステートメント

insert into el_temporal_try 
(id, columnA,valid_period_start, valid_period_end)
values
(1,'B',sysdate - 8, sysdate - 7);

結果

ORA-00001: 一意の制約 (PBSVW.EL_TEMPORAL_TRY_PK) に違反しています

「ID」列が原因であることがわかりました。ただし、この 2 つの行は別の期間のものであるため、私の問題は許可されますか?

この期間は、フラッシュバックの代わりにレコードの変更履歴をキャプチャする機能に使用することを意図していました。しかし、この状況では主キーを使用すべきではないということですか?

前もって感謝します!

4

2 に答える 2