Frage

Was ist das äquivalent zu den folgenden SQL Server-Anweisungen in DB2?

  • Begin Transaction
  • Commit-Transaktion
  • Rollback Transaktion
War es hilfreich?

Lösung

Siehe hier für ein Beispiel. Aber im Grunde

BEGIN TRANSACTION
COMMIT TRANSACTION
ROLLBACK

Andere Tipps

Die Antwort ist eigentlich ein wenig komplizierter als hier angegeben. Zwar Transaktionen sind ANSI standardisiert und DB2 können unterstützen sie.

DB2 für z / OS kann ein ganz anderes Tier von den anderen Varianten sein (LUW, Linux-Unix-Windows ist die am häufigsten). Gefährdet in eine Tirade des Gleitens, macht dies die Idee des Sprechens über DB2 fast sinnlos. Sie sprechen über einige spezifische Variante von IBMs Datenbank, aber was funktioniert in einem in einem anderen völlig unwirksam sein. Ich werde davon ausgehen, dass alles, was Geschmack des OP wurde unter Verwendung war nicht das z / O ein, da die BEGIN TRANSACTION Antwort angenommen wurde.

Für diejenigen von euch, die über diese stolpern versuchen, Transaktionen zu verwenden, um mit DB2 z / OS, hier ist der Überblick: DB2 für den Mainframe nicht über explizite Transaktionen. Es gibt keine BEGIN TRANSACTION oder anderes vergleichbares Konstrukt. Transaktionen implizit begonnen werden (in der Regel als eine Einheit der Arbeit in der Dokumentation genannt) und engagierter oder explizit zurück gerollt (in der Regel - viele GUI-Tools, wie Toad, haben eine Autocommit-Funktion, die auf Sie ab und schleichen kann).

Von dem 9.1 z / OS SQL-Referenzhandbuch (Seite 28, erhältlich unter http: //www-01.ibm.com/support/docview.wss?uid=swg27011656#manuals ):

"Eine Arbeitseinheit wird eingeleitet, wenn ein Anwendungsprozess eingeleitet wird. Eine Arbeitseinheit auch eingeleitet, wenn die vorherige Arbeitseinheit von etwas beendet andere als das Ende des Anwendungsprozesses. Eine Arbeitseinheit wird beendet durch eine Festschreibungsoperation, eine vollständige Wiederholungsoperation, oder das Ende eines Anwendungsprozesses. COMMIT oder ROLLBACK Betrieb betrifft nur die Datenbankänderungen innerhalb der Arbeitseinheit endet. "

Das nächste, was Sie bekommen, wenn das Schreiben von Skripts ist, um manuell einen Speicherpunkt angeben.

Diese sehen wie folgt aus:

 SAVEPOINT A ON ROLLBACK RETAIN CURSORS;

 UPDATE MYTABLE SET MYCOL = 'VAL' WHERE 1;

 ROLLBACK WORK TO SAVEPOINT A;

Oberflächlich ähneln diese explizite Transaktionen, aber sie sind es nicht. Stattdessen sind sie wirklich nur in einer einzigen impliziten Transaktions in Zeitpunkt. Für viele Zwecke können sie ausreichen, aber es ist wichtig, die konzeptionellen Unterschiede zu sein.

Wenn Sie ein IDE wie IntelliJ IDEA (oder andere), dann haben Sie die Möglichkeit nicht explizit eine Transaktion zu starten. In anderen Worten kann man nicht geben ‚Transaktion beginnen‘ in der Konsole Ihres IDE.
Aber Sie können ‚Auto-commit‘ (und reaktivieren es später) und geben Sie dann ‚commit‘ oder „Rollback‘ in die Konsole deaktivieren.
In IDEA gibt es auch eine Taste zu ‚begehen‘ und eine Schaltfläche zu ‚Rollback‘. Werfen Sie einen Blick auf den Bildschirm Dump angebracht ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top