Catégories :

Fonctions système (Informations système)

SYSTEM$STREAM_GET_TABLE_TIMESTAMP

Renvoie l’horodatage en nanosecondes de la dernière version de la table au moment du ou avant le décalage actuel pour le flux spécifié. Lorsque le flux est interrogé (ou consommé), les enregistrements renvoyés comprennent toutes les transactions effectuées après cette version de la table et avant l’heure actuelle.

Note

Cette fonction a été créée principalement pour « amorcer » un flux (c’est-à-dire renvoyer l’ensemble des enregistrements insérés entre la période où la table a été créée (à la version de la table t0) et celle où le flux spécifié a été créé). Depuis l’introduction de cette fonction, les instructions CREATE STREAM et SELECT qui incluent la clause CHANGES prennent désormais en charge Time Travel en utilisant la clause AT | BEFORE. Ces options offrent une plus grande souplesse pour interroger les enregistrements des tables historiques.

Syntaxe

SYSTEM$STREAM_GET_TABLE_TIMESTAMP('<stream_name>')
Copy

Arguments

stream_name

Le nom du flux à interroger.

  • Notez que le nom complet doit être placé entre guillemets simples, y compris la base de données et le schéma (si le nom est complètement qualifié), c’est-à-dire '<bd>.<schéma>.<nom_flux>'.

  • Si le nom du flux est sensible à la casse ou inclut des caractères spéciaux ou des espaces, des guillemets doubles sont nécessaires pour traiter la casse/les caractères. Les guillemets doubles doivent être placés entre guillemets simples, c’est-à-dire '"<nom_flux>"'.

Notes sur l’utilisation

  • Cette fonction renvoie une erreur lorsque l’entrée est un flux sur une vue.

    Pour créer un flux à ou avant le décalage actuel d’un flux existant, nous recommandons de fournir le nom du flux existant en entrée de la clause AT | BEFORE pour des raisons de simplicité et de compatibilité maximale avec les flux existants :

    CREATE STREAM ... AT ( STREAM => '<stream-name>' )
    
    Copy

Exemples

Interrogez l’horodatage du décalage actuel pour un flux :

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');
Copy