Catégories :

Fonctions système (Informations système)

SYSTEM$STREAM_GET_TABLE_TIMESTAMP

Returns the timestamp in nanoseconds of the latest table version at or before the current offset for the specified stream. When the stream is queried (or consumed), the records returned include all transactions committed after this table version and before the current time.

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

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 qui a plusieurs tables sous-jacentes.

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

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');
Revenir au début