- Kategorien:
Systemfunktionen (Systeminformationen)
SYSTEM$STREAM_GET_TABLE_TIMESTAMP¶
Gibt für den angegebenen Datenstream den Zeitstempel in Nanosekunden der neuesten Tabellenversion am oder vor dem aktuellen Offset zurück. Wenn der Datenstream abgefragt (oder verbraucht) wird, enthalten die zurückgegebenen Datensätze alle Transaktionen, die nach dieser Tabellenversion und vor der aktuellen Uhrzeit bestätigt wurden.
Bemerkung
Diese Funktion wurde in erster Linie als Mittel zum „Bootstrapping“ eines Streams erstellt, d. h. zur Rückgabe der Menge von Datensätzen, die zwischen dem Zeitraum, in dem die Tabelle erstellt wurde (bei Tabellenversion t0
) und dem angegebenen Stream eingefügt wurden. Durch Einführung dieser Funktion unterstützen CREATE STREAM- und SELECT-Anweisungen, die eine CHANGES-Klausel enthalten, nun Time Travel mit der AT | BEFORE-Klausel. Diese Optionen bieten eine größere Flexibilität bei der Abfrage historischer Tabellendatensätze.
Syntax¶
SYSTEM$STREAM_GET_TABLE_TIMESTAMP('<stream_name>')
Argumente¶
stream_name
Der Name des abzufragenden Streams.
Beachten Sie, dass der gesamte Name in einfache Anführungszeichen eingeschlossen werden muss, einschließlich Datenbank und Schema (wenn der Name vollqualifiziert ist), d. h.
'<Datenbank>.<Schema>.<Name_des_Streams>'
.Wenn der Streamname zwischen Groß- und Kleinschreibung unterscheidet bzw. Sonderzeichen oder Leerzeichen enthält, sind doppelte Anführungszeichen erforderlich, damit sich Groß-/Kleinschreibung und Zeichen korrekt verarbeiten lassen. Die doppelten Anführungszeichen müssen in einfache Anführungszeichen eingeschlossen werden, d. h.
'"<Name_des_Streams>"'
.
Nutzungshinweise¶
Diese Funktion gibt einen Fehler zurück, wenn es sich bei der Eingabe um einen Stream in einer Ansicht handelt.
Um einen Stream an oder vor dem aktuellen Offset eines bestehenden Streams zu erstellen, empfehlen wir, den Namen des bestehenden Streams als Eingabe für die AT | BEFORE Klausel anzugeben, um die Kompatibilität mit vorhandenen Streams sicherzustellen:
CREATE STREAM ... AT ( STREAM => '<stream-name>' )
Beispiele¶
Abfrage des Zeitstempels für den aktuellen Offset eines Streams:
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');