- カテゴリ:
システム関数 (システム情報)
SYSTEM$STREAM_GET_TABLE_TIMESTAMP¶
指定されたストリームのために、現在またはそれ以前のオフセットにおける最新のテーブルバージョンのタイムスタンプ(単位: ナノ秒)を返します。ストリームが照会(または消費)されると、返されるレコードには、このテーブルバージョンの後、現在の時刻より前にコミットされたすべてのトランザクションが含まれます。
注釈
この関数は、主にストリームを「ブートストラップ」する手段として作成されました(つまり、テーブルが作成された期間(テーブルバージョン t0
)と指定されたストリームが作成された期間の間に挿入されたレコードのセットを返します)。この関数が導入されてから、 CHANGES 句を含む CREATE STREAM および SELECT ステートメントは、 AT | BEFORE 句を使用したTime Travelをサポートするようになりました。これらのオプションにより、履歴テーブルレコードをクエリする際に柔軟性が向上します。
構文¶
SYSTEM$STREAM_GET_TABLE_TIMESTAMP('<stream_name>')
引数¶
stream_name
クエリするストリームの名前です。
データベースとスキーマ(名前が完全修飾されている場合)を含む、名前全体を一重引用符で囲む必要があります。つまり、
'<データベース>.<スキーマ>.<ストリーム名>'
。ストリーム名で大文字と小文字が区別されるか、特殊文字やスペースが含まれる場合、大文字と小文字の処理には二重引用符が必要です。二重引用符は、一重引用符で囲む必要があります。例:
'"<ストリーム名>"'
使用上の注意¶
入力がビューのストリームの場合、この関数はエラーを返します。
既存のストリームに対して現在のオフセットまたはその前にストリームを作成するには、簡単にするため、また既存のストリームとの互換性を最大限にするため、AT | BEFORE 句への入力として既存のストリーム名を指定することをお勧めします。
CREATE STREAM ... AT ( STREAM => '<stream-name>' )
例¶
ストリームに対する現在のオフセットのタイムスタンプをクエリします。
create table MYTABLE1 (id int);
create table MYTABLE2(id int);
create or replace stream MYSTREAM on table MYTABLE1;
insert into MYTABLE1 values (1);
-- consume the stream
begin;
insert into MYTABLE2 select id from MYSTREAM;
commit;
-- return the current offset for the stream
select system$stream_get_table_timestamp('MYSTREAM');