過去の変更を追跡するために、valid_from と valid_to の 2 つの列を含むテーブルを設計中です。たとえば、私のテーブル構造は次のようになります。
create table currency_data
(
currency_code varchar(16) not null,
currency_desc varchar(16) not null,
valid_from date not null,
valid_to date,
d_insert_date date,
d_last_update date,
constraint pk_currency_data primary key (currency_code, valid_from)
)
最初は valid_to を空白のままにしておきます。将来 currency_desc が変更された場合は、valid_to を古い説明が無効になる日付に設定し、新しい行を新しい説明で作成する必要があります。から有効。しかし、これら 2 つの行が重ならないようにするにはどうすればよいでしょうか。たとえば、次のクエリでは 1 行のみが生成されます。
select currency_desc
from currency_data
where currency_code = 'USD'
and trunc(sysdate) between valid_from and nvl(valid_to, sysdate)
すべての開発者/エンドユーザーがこのルールを認識していることを確認する以外に、これを達成するためのより良い方法はありますか? どうもありがとう。