今回は前回設定した時刻有効性(Temporal Validity)の表を参照してみます。
以下の様な有効期限が表のデータに設定してあります。
EMPNO ENAME
---------- ----------
100 SCOTT 2000/10/1~
200 KING 2002/4/1~2010/03/30
300 ADAMS 2001/4/1~2012/12/31
時点を指定してSELECTを実行してみます。
SQL> SELECT * FROM emp3
2 AS OF PERIOD FOR user_time
3 TO_DATE('2002-01-01','YYYY-MM-DD');
EMPNO ENAME
---------- ----------
100 SCOTT
300 ADAMS
まず、2002/01/01時点で有効なデータを参照しています。
AS OF PERIOD FOR句で時点を指定しています。
SQL> SELECT * FROM emp3
2 VERSIONS PERIOD FOR user_time
3 BETWEEN TO_DATE('2010-04-01','YYYY-MM-DD')
4 AND SYSDATE;
EMPNO ENAME
---------- ----------
100 SCOTT
300 ADAMS
次に2010/04/01~現時点で有効なデータを参照しています。
VERSIONS PERIOD FOR 句で範囲を指定しています。
SQL> exec DBMS_FLASHBACK_ARCHIVE.ENABLE_AT_VALID_TIME('ALL');
PL/SQLプロシージャが正常に完了しました。
SQL> SELECT * FROM scott.emp3;
EMPNO ENAME
---------- ----------
100 SCOTT
200 KING
300 ADAMS
さらにDBMS_FLASHBACK_ARCHIVEのENABLE_AT_VALID_TIMEプロシージャでデフォルトの動作を指定できます。
デフォルトは全データALLを表示します。
exec DBMS_FLASHBACK_ARCHIVE.ENABLE_AT_VALID_TIME('CURRENT');
SQL> SELECT * FROM scott.emp3;
EMPNO ENAME
---------- ----------
100 SCOTT
CURRENTを指定すると現時点で有効なデータが表示されます。
以下の様な有効期限が表のデータに設定してあります。
EMPNO ENAME
---------- ----------
100 SCOTT 2000/10/1~
200 KING 2002/4/1~2010/03/30
300 ADAMS 2001/4/1~2012/12/31
時点を指定してSELECTを実行してみます。
SQL> SELECT * FROM emp3
2 AS OF PERIOD FOR user_time
3 TO_DATE('2002-01-01','YYYY-MM-DD');
EMPNO ENAME
---------- ----------
100 SCOTT
300 ADAMS
まず、2002/01/01時点で有効なデータを参照しています。
AS OF PERIOD FOR句で時点を指定しています。
SQL> SELECT * FROM emp3
2 VERSIONS PERIOD FOR user_time
3 BETWEEN TO_DATE('2010-04-01','YYYY-MM-DD')
4 AND SYSDATE;
EMPNO ENAME
---------- ----------
100 SCOTT
300 ADAMS
次に2010/04/01~現時点で有効なデータを参照しています。
VERSIONS PERIOD FOR 句で範囲を指定しています。
SQL> exec DBMS_FLASHBACK_ARCHIVE.ENABLE_AT_VALID_TIME('ALL');
PL/SQLプロシージャが正常に完了しました。
SQL> SELECT * FROM scott.emp3;
EMPNO ENAME
---------- ----------
100 SCOTT
200 KING
300 ADAMS
さらにDBMS_FLASHBACK_ARCHIVEのENABLE_AT_VALID_TIMEプロシージャでデフォルトの動作を指定できます。
デフォルトは全データALLを表示します。
exec DBMS_FLASHBACK_ARCHIVE.ENABLE_AT_VALID_TIME('CURRENT');
SQL> SELECT * FROM scott.emp3;
EMPNO ENAME
---------- ----------
100 SCOTT
CURRENTを指定すると現時点で有効なデータが表示されます。

コメント