Kategorien:

Systemfunktionen (Systeminformationen)

SYSTEM$LAST_CHANGE_COMMIT_TIME

Gibt ein Token zurück, das verwendet werden kann, um festzustellen, ob eine Datenbanktabelle oder eine Ansicht zwischen zwei Funktionsaufrufen geändert wurde. Wenn sich das von einem Aufruf zurückgegebene Token von dem Token unterscheidet, das von einem separaten Aufruf zurückgegeben wird, dann hat sich die Tabelle oder die Ansicht zwischen den beiden Aufrufen geändert, typischerweise aufgrund einer DML-Operation (z. B. einer INSERT).

Wenn das angegebene Datenbankobjekt eine Ansicht ist, dann hat sich mindestens eines der Datenbankobjekte geändert, auf das die Ansicht verweist.

Die Funktion muss als Systemfunktion aufgerufen werden, d. h. SYSTEM$LAST_CHANGE_COMMIT_TIME.

Syntax

SYSTEM$LAST_CHANGE_COMMIT_TIME( '<object_name>'  )

Argumente

Objektname

Gibt die Tabelle oder die Ansicht an.

Rückgabewerte

Der Datentyp des zurückgegebenen Werts ist NUMBER mit einer Skalierung von 0.

Nutzungshinweise

  • Er kann in Anwendungen wie z. B. BI-Tools verwendet werden, um zu ermitteln, ob sich die zugrunde liegenden Tabellendaten seit der letzten Anzeige der Daten geändert haben. Dies kann für Anwendungen nützlich sein, die Dashboards anzeigen und herausfinden müssen, ob das Dashboard auf Basis der neuen Daten in der Tabelle aktualisiert werden muss.

  • Für jede DML-Operation, die auf der angegebenen Tabelle oder den zugrundeliegenden Tabellen in der angegebenen Ansicht ausgeführt wird, erhöht sich der zurückgegebene Wert.

  • Der von der Funktion zurückgegebene Wert ist in der Regel eine Annäherung an die Uhrzeit, zu der das Datenbankobjekt zuletzt geändert wurde, ausgedrückt als UTC-Zeitstempel in Millisekunden seit Beginn der Epoche (d. h. seit Mitternacht des 1. Januar 1970). Bei den Werten handelt es sich jedoch nur um Näherungswerte, was zum Teil darauf zurückzuführen ist, dass die Genauigkeit und die Ergebnisschiefe variieren können.

    Snowflake empfiehlt, diesen Wert nur als Änderungsindikator zu verwenden und rät den Benutzern dringend davon ab, diesen Wert als Zeitstempel zu behandeln.

Beispiele

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 |
+--------------------------------+