2009/03/05

[oracle]フラッシュバック問い合わせ

oracleでは、フラッシュバック問い合わせという、現在ではなく、過去のある一時点のデータを持っている状態でテーブルの問い合わせをすることができます。

例えば、昨日(2009年03月04日)時点のhogeテーブルについて考えてみます。

ID   フルーツ
-------------
001 りんご
002 いちご

昨日までは上のデータだったのですが、今日(2009年03月05日)、hogeテーブルに一行登録を行ったとします(insert)。

その時の状況は、下のようになります。

ID   フルーツ
-------------
001 りんご
002 いちご
003 バナナ

この時、昨日時点でのデータを取得したいなーと思った時、以下のSQL文を実行すれば取得できます。

select *
from hoge
as of timestamp TO_TIMESTAMP('20090304','yyyymmddhh24mi')
;

この時、重要なのは、as of timestampを使うというところ。

他にもSCNを使う方法もあるのですが、それはまだ使ったことがないので、使ったときにまた改めて書きたいと思います。

0 コメント:

コメントを投稿