Welcome Guest, you are in: Anmelden

CP Wiki

RSS RSS

Navigation



  1. Administration

Suche im wiki
»
 » Startseite » netFrame als Plattform Menü » Tipps und Tricks » Richtiges arbeiten mit Transaktionen | » Erweiterte Suche

Beispiel:
Mehrere Anweisungen in einer Transaktion kapseln 1. Dieses Beispiel zeigt wie man richtig mehrere Anweisung in eine Transaktion kapselt und diese
bei einem Fehler zurücksetzt.

DECLARE @intErrorCode INT

BEGIN TRAN T1

DELETE FROM PM_PARTNER WHERE CU_ID = '1' SELECT @intErrorCode =
ERROR
IF (@intErrorCode <> 0) GOTO PROBLEM

INSERT INTO pm_partner
(cu_id, CU_CUSTOM_INITIALS)
VALUES(newid(), 'KYO')
SELECT @intErrorCode = 
ERROR IF (@intErrorCode <> 0) GOTO PROBLEM

COMMIT TRAN T1

PROBLEM: IF (@intErrorCode <> 0) BEGIN ROLLBACK TRAN T1 END

Vorsicht:
Wenn dies nicht richtig gemacht wird kann es sein dass trotz Fehlers Teile der SQL Anweisung ausgeführt werden. Falls die Anweisung zweimal
hintereinander aufgerufen werden sollte, müssen sie ein “GO” am Ende hinzufügen, damit der Server die Anweisung teilen kann.


Beispiel 2:

NUR AB SQL 2005

BEGIN TRY BEGIN TRAN T1

DELETE FROM dbo.CPI_perZustellung WHERE ZUS_Datum = '20090101' AND ZUS_GUID = '123'
Adresse loeschen NUR wenn 1 verweis uaf die adresse existiert IF ( SELECT COUNT(*) FROM dbo.CPI_perzustellung WHERE ZUS_Datum = '20090101' AND ADR_GUID = '123' ) =1 DELETE FROM dbo.CPI_perAdresse WHERE ADR_GUID = '123' COMMIT TRAN T1 END TRY BEGIN CATCH ROLLBACK TRAN T1 END CATCH


Achtung! Funktioniert erst ab SQL Server 2005.

ScrewTurn Wiki version 3.0.1.400. Some of the icons created by FamFamFam.