Verwendung von Transaktionen in gespeicherten Prozeduren

Verwendung von Transaktionen in gespeicherten Prozeduren

am 07.01.2008 17:09:30 von Jan Mielke

Hallo NG,
ich bruache ein wenig (vielleicht auch mehr) Hilfe zur Verwendung
von Transaktionen in proceduren. Ich fürchte mein größtes Problem
ist, dass ich bisher nur Prozeduren für den MS-SQLServer geschrieben
habe und dass ich deshalb scheinbar die falschen Suchbegriffe in
google verwende. Ich finde zumindest keine passenden Code-Snippets,
die mir den Einstieg erleichtern.

Vielleicht kann mir hier ja jemand mit passenden links und / oder
Hinweisen weiterhelfen.

Zur Erklärung was ich machen will, vielleicht zuerst mal einige Zeilen
aus einer Stored Procedure, die ich für einen SQL-Server verwende:


BEGIN TRY
BEGIN TRANSACTION
-- hier stehen noch einige andere Anweisungen...

-- Hier tritt z.B. ein Fehler auf, weil id_User ein
-- PrimaryKey ist...
INSERT INTO meineDB.user (id_User) VALUES (@pIdUser);
SET @rIntResult = 1;
COMMIT TRANSACTION;
END TRY
BEGIN CATCH
-- SET NUMBER ERROR IN RESULT
SET @rIntResult = -1
SELECT @rResultMsg=ERROR_MESSAGE()
SELECT @rResultMsg as ResultMsg;
-- UNDONE THE TRANSACTION
ROLLBACK
END CATCH

Ich suche also nach einer Möglichkeit in einer mysql stored procedure
mehrere Anweisungen hinter einander auszuführen. Wenn alles funktioniert
werden die Anweisungen mit einem "commit" in die db übertragen.
Tritt ein Fehler auf, werden alle Anweisungen der Transaktion rückgängig
gemacht und ich habe die Möglichkeit in einem catch Block weitere
Werte zu ändern, bzw. Aktionen auszuführen.

Durch googlen stoße ich leider immer nur auf code, in denen
Transaktionen z.B. in java-Programmen verwendet werden. Das hilft mir an
dieser Stelle aber leider nicht weiter.

Schonmal danke für die Hilfe,
Jan