CURRENT TEMPORAL SYSTEM_TIME (Sonderregister)

Das Sonderregister CURRENT TEMPMÜNDLICHE SYSTEM_TIME gibt einen TIMESTAMP (12) -Wert an, der in der Standardzeitraumspezifikation SYSTEM_TIME für Verweise auf temporale Tabellen für Systemzeitraum verwendet wird.

Wenn auf eine temporale Tabelle für Systemzeitraum verwiesen wird und der Wert, der für das Sonderregister CURRENT TEMPORAL SYSTEM_TIME wirksam ist, durch CTSTdargestellt wird, was der Wert ungleich null ist, ist die folgende Zeitraumspezifikation implizit:
FOR SYSTEM_TIME AS OF CTST

Der Anfangswert des Sonderregisters in einer benutzerdefinierten Funktion oder Prozedur wird von der aufrufenden Anwendung übernommen. In anderen Kontexten ist der Anfangswert des Sonderregisters der Nullwert.

Der Wert dieses Sonderregisters kann geändert werden, indem die Anweisung SET CURRENT TEMPORAL SYSTEM_TIME ausgeführt wird.

Die Einstellung des Sonderregisters CURRENT TEMPMÜNDLICHE SYSTEM_TIME wirkt sich auf die folgenden kompilierten SQL-Objekte aus, wenn sie mit der Bindeoption SYSTIMESENSITIVE auf YES gebunden wurden:
  • SQL-Prozeduren
  • Kompilierte Funktionen
  • Kompilierte Trigger
  • Compound-SQL-Anweisungen (kompiliert)
  • Externe UDFs)
Die Einstellung für die Bindeoption SYSTIMESENSITIVE bestimmt, ob Verweise auf temporale Tabellen für Systemzeitraum in statischen SQL-Anweisungen und in dynamischen SQL-Anweisungen in einem Paket vom Wert des Sonderregisters CURRENT TEMPMÜNDLICHE SYSTEM_TIME betroffen sind. Die Bindeoption kann mit dem Wert YES oder NO definiert werde.

Für die folgenden Beispiele wird angenommen, dass die Tabelle IN_TRAY eine temporale Tabelle für Systemzeitraum ist.

Beispiel 1: Listen Sie auf der Basis des Status der Nachrichten in IN_TRAY ab dem Datum, das im Sonderregister CURRENT TEMPORAL SYSTEM_TIME angegeben ist, die Benutzer-IDs und Betreffzeilen auf.
SELECT SOURCE, SUBJECT 
    FROM IN_TRAY
Angenommen, das Sonderregister CURRENT TEMPORAL SYSTEM_TIME wurde zuvor auf den Wert CURRENT TIMESTAMP-7 DAYS gesetzt und ist derzeit auf den Nullwert gesetzt, gibt die folgende Anweisung dasselbe Ergebnis zurück.
SELECT SOURCE, SUBJECT 
    FROM IN_TRAY 
    FOR SYSTEM_TIME AS OF CURRENT TEMPORAL SYSTEM_TIME
Beispiel 2: Listen Sie die Benutzer-ID und die Betreffzeile für die Nachrichten in IN_TRAY auf, die vor dem im Sonderregister CURRENT TEMPORAL SYSTEM_TIME angegebenen Wert gesendet wurden.
SELECT SOURCE, SUBJECT 
    FROM IN_TRAY
    WHERE RECEIVED < CURRENT TEMPORAL SYSTEM_TIME
Angenommen, das Sonderregister CURRENT TEMPORAL SYSTEM_TIME wurde zuvor auf '2011-01-01-00.00.00' gesetzt und ist derzeit auf den Nullwert gesetzt, gibt die folgende Anweisung dasselbe Ergebnis zurück.
SELECT SOURCE, SUBJECT
    FROM IN_TRAY
    FOR SYSTEM_TIME AS OF '2011-01-01-00.00.00'
    WHERE DATE(RECEIVED) < DATE('2011-01-01-00.00.00')