Catégories :

Fonctions système (Informations système)

SYSTEM$LAST_CHANGE_COMMIT_TIME

Renvoie un jeton qui peut être utilisé pour détecter si une table ou une vue de la base de données a changé entre deux appels à la fonction. Si le jeton renvoyé par un appel est différent de celui renvoyé par un appel séparé, alors la table ou la vue a changé entre les deux appels, généralement en raison d’une opération DML (par exemple un INSERT).

Si l’objet de base de données spécifié est une vue, alors au moins un des objets de base de données référencés par la vue a changé.

La fonction doit être appelée en tant que fonction système, c’est-à-dire SYSTEM$LAST_CHANGE_COMMIT_TIME.

Syntaxe

SYSTEM$LAST_CHANGE_COMMIT_TIME( '<object_name>'  )

Arguments

nom_objet

Précise la table ou la vue.

Renvoie

Le type de données de la valeur renvoyée est NUMBER avec une échelle de 0.

Notes sur l’utilisation

  • La valeur peut être utilisée dans des applications, telles que les outils BI, pour déterminer si les données de la table sous-jacente ont changé. Cela peut être utile pour les applications qui affichent des tableaux de bord et doivent déterminer si le tableau de bord doit être mis à jour en fonction des nouvelles données du tableau.

  • Pour chaque opération DML effectuée sur la table spécifiée ou les tables sous-jacentes dans la vue spécifiée, la valeur retournée augmente.

  • La valeur renvoyée par la fonction est généralement une approximation du moment où l’objet de la base de données a été modifié pour la dernière fois, exprimée par l’horodatage UTC en millisecondes depuis le début de l’époque (c’est-à-dire depuis minuit le 1er janvier 1970). Cependant, les valeurs ne sont que des approximations, en partie parce que la précision et l’asymétrie des résultats peuvent varier.

    Snowflake recommande d’utiliser cette valeur uniquement comme indicateur de changement et déconseille vivement aux utilisateurs de traiter cette valeur comme un horodatage.

Exemples

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