END [OF ] TRANSACTION [operand1
]
|
Dieses Dokument behandelt folgende Themen:
Eine Erläuterung der in dem Syntax-Diagramm verwendeten Symbole entnehmen Sie dem Abschnitt Syntax-Symbole.
Verwandte Statements: ACCEPT/REJECT
|
AT BREAK
|
AT START OF DATA
|
AT END OF DATA
|
BACKOUT TRANSACTION
|
BEFORE BREAK PROCESSING
|
DELETE
|
FIND
|
GET
|
GET SAME
|
GET TRANSACTION DATA
|
FIND
HISTOGRAM
|
LIMIT
| PASSW
| PERFORM BREAK PROCESSING
|
READ
|
RETRY
|
STORE
|
UPDATE
Gehört zur Funktionsgruppe: Datenbankzugriffe und Datenbankänderungen
Das Statement END TRANSACTION
dient dazu, das Ende einer
logischen Transaktion zu markieren. Eine logische Transaktion ist die kleinste
(vom Benutzer definierte) logische Arbeitseinheit, die vollständig ausgeführt
werden muss, damit die logische Konsistenz der Daten auf der Datenbank
gewährleistet ist.
Die erfolgreiche Ausführung eines END
TRANSACTION
-Statements bewirkt, dass alle im Verlaufe der Transaktion
durchgeführten Datenänderungen physisch auf der Datenbank durchgeführt worden
sind (bzw. werden) und von einem anschließenden Abbruch, sei er durch den
Benutzer, Natural, die Datenbank oder das Betriebssystem herbeigeführt, nicht
mehr beeinflusst werden können. Wenn das END TRANSACTION
-Statement
nicht erfolgreich ausgeführt wird, d.h. wenn die logische Transaktion nicht
vollständig ausgeführt ist, werden alle im Laufe der Transaktion bereits
durchgeführten Datenänderungen automatisch wieder rückgängig gemacht.
END TRANSACTION
bewirkt außerdem, dass alle während der
Transaktion im Hold-Status gehaltenen Datensätze wieder freigegeben werden.
Die Ausführung des END TRANSACTION
-Statements kann an eine
logische Bedingung geknüpft werden.
Weitere Informationen hierzu finden Sie im Kapitel Datenbankzugriffe im Leitfaden zur Programmierung.
Das Statement END TRANSACTION
kann nicht mit Entire System
Server benutzt werden.
Operanden-Definitionstabelle:
Operand | Mögliche Struktur | Mögliche Formate | Referenzierung erlaubt | Dynam. Definition | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand1 | C | S | N | A | U | N | P | I | F | B | D | T | ja | nein |
Syntax-Element-Beschreibung:
Syntax-Element | Beschreibung |
---|---|
operand1
|
Speicherung von Transaktionsdaten:
Bei einer Transaktion auf einer Adabas-Datenbank
oder auf einer DL/I-Datenbank in einer batch-orientierten BMP-Region (nur in
IMS-Umgebungen) können Sie mit diesem Statement auch
transaktionsbezogene Daten speichern. Diese Daten dürfen maximal 2000 Bytes
lang sein und können mit einem Die Transaktionsdaten werden auf die mit dem Profilparameter
Wenn der |
Ein END TRANSACTION
-Statement ohne Transaktionsdaten (d.h.
ohne operand1) wird nur ausgeführt, wenn eine
Datenbanktransaktion unter Kontrolle von Natural stattgefunden hat. Für welche
Datenbanken das Statement ausgeführt wird, hängt davon ab, wie der
Natural-Profilparameter ET
gesetzt ist.
Bei ET=OFF
wird das Statement nur für die von der
Transaktion betroffene Datenbank ausgeführt; bei ET=ON
wird es für
alle Datenbanken ausgeführt, die seit der letzten Ausführung eines
BACKOUT TRANSACTION
- oder
END TRANSACTION
-Statements referenziert wurden.
Ein END TRANSACTION
-Statement mit Transaktionsdaten (d.h.
mit Angabe von operand1) wird immer ausgeführt, und
die Transaktionsdaten werden wie unten beschrieben auf einer bestimmen
Datenbank gespeichert. Für welche Datenbanken das Statement außerdem ausgeführt
wird, hängt vom ET
-Parameter (siehe
oben) ab.
DL/I Databases |
Da die PSB-Initialisierung durch eine Syncpoint-Anfrage beendet
wird, speichert Natural die PSB-Position, bevor das |
---|---|
VSAM Databases |
Informationen zur Transaktionslogik, die beim Zugriff auf VSAM gilt, finden Sie in der Natural for VSAM -Dokumentation. |
SQL Databases |
Da die meisten SQL-Datenbanken bei Beendigung einer logischen
Arbeitseinheit alle Cursor schließen, darf ein |
** Example 'ETREX1': END TRANSACTION ** ** CAUTION: Executing this example will modify the database records! ************************************************************************ DEFINE DATA LOCAL 1 EMPLOY-VIEW VIEW OF EMPLOYEES 2 CITY 2 COUNTRY END-DEFINE * FIND EMPLOY-VIEW WITH CITY = 'BOSTON' ASSIGN COUNTRY = 'USA' UPDATE END TRANSACTION /* AT END OF DATA WRITE NOTITLE *NUMBER 'RECORDS UPDATED' END-ENDDATA /* END-FIND END
Ausgabe des Programms ETREX1
:
7 RECORDS UPDATED
** Example 'ETREX2': END TRANSACTION (with ET data) ** ** CAUTION: Executing this example will modify the database records! ************************************************************************ DEFINE DATA LOCAL 1 EMPLOY-VIEW VIEW OF EMPLOYEES 2 PERSONNEL-ID 2 NAME 2 FIRST-NAME 2 CITY * 1 #PERS-NR (A8) INIT <' '> END-DEFINE * REPEAT INPUT 'ENTER PERSONNEL NUMBER TO BE UPDATED:' #PERS-NR IF #PERS-NR = ' ' ESCAPE BOTTOM END-IF /* FIND EMPLOY-VIEW PERSONNEL-ID = #PERS-NR INPUT (AD=M) NAME / FIRST-NAME / CITY UPDATE END TRANSACTION #PERS-NR END-FIND /* END-REPEAT END
Ausgabe des Programms ETREX2
:
ENTER PERSONNEL NUMBER TO BE UPDATED: 20027800
Nach Änderung und Bestätigung der Personalnummer:
NAME LAWLER FIRST-NAME SUNNY CITY MILWAUKEE