カテゴリ:

システム関数 (システム情報)

SYSTEM$LAST_CHANGE_COMMIT_TIME

関数の2回の呼び出しの間にデータベーステーブルまたはビューが変更されたかどうかを検出するのに使用できるトークンを返します。呼び出しによって返されるトークンが別の呼び出しによって返されるトークンと異なる場合、通常はDML操作(たとえばINSERT)が原因で、2つの呼び出し間でテーブルまたはビューが変更されます。

指定されたデータベースオブジェクトがビューの場合、ビューによって参照されるデータベースオブジェクトの少なくとも1つが変更されました。

この関数は、システム関数(SYSTEM$LAST_CHANGE_COMMIT_TIME)として呼び出す必要があります。

構文

SYSTEM$LAST_CHANGE_COMMIT_TIME( '<object_name>'  )

引数

オブジェクト名

テーブルまたはビューを指定します。

戻り値

戻り値のデータ型はスケールが0の NUMBER です。

使用上の注意

  • 基になるテーブルデータが変更されたかどうかを判断するために、BI ツールなどのアプリケーションで値を使用できます。これは、ダッシュボードを表示し、テーブル内の新しいデータに基づいてダッシュボードを更新する必要があるかどうかを把握する必要があるアプリケーションに役立ちます。

  • 指定されたテーブルまたは指定されたビューの基になるテーブルに対して実行されたDML操作ごとに、戻り値が増加します。

  • 関数によって返される値は、通常、データベースオブジェクトが最後に変更された時刻の 近似値 であり、エポックの開始から(つまり、1970年1月1日の深夜以降)のミリ秒単位の UTC タイムスタンプとして表されます)。ただし、結果の精度とスキューが異なる可能性があるため、値は概算にすぎません。

    Snowflakeは、ユーザーがこの値をあくまで変更のインジケータとしてのみ使用することを推奨しており、タイムスタンプとして扱うことは勧めていません。

CALL SYSTEM$LAST_CHANGE_COMMIT_TIME('mytable');

+--------------------------------+
| SYSTEM$LAST_CHANGE_COMMIT_TIME |
|--------------------------------|
|                  1501896165983 |
+--------------------------------+
SELECT SYSTEM$LAST_CHANGE_COMMIT_TIME('mytable');

+--------------------------------+
| SYSTEM$LAST_CHANGE_COMMIT_TIME |
|--------------------------------|
|                  1501896165983 |
+--------------------------------+

INSERT INTO mytable VALUES (2,100), (3,300);

SELECT SYSTEM$LAST_CHANGE_COMMIT_TIME('mytable');

+--------------------------------+
| SYSTEM$LAST_CHANGE_COMMIT_TIME |
|--------------------------------|
|                  1501896192700 |
+--------------------------------+