Welcome
Guest
, you are in:
<root>
•
Anmelden
CP Wiki
Navigation
¶
CP Solutions
Startseite
domizil+
Startseite
Administration
Administration
Neue Seite
Alle Seiten
Kategorien
Navigations-Pfade
Datei Manager
Neuer Benutzer
Suche im wiki
»
Zurück
Richtiges arbeiten mit Transaktionen an der SQL Daenbank
Modified on 20/05/2010 15:46
by
CPATRD
Categorized as
SQL
((([image| |http://www.cp-austria.at/website/DesktopModules/Wiki/images/Home.gif|MainPage] » [MainPage|Startseite] » [netFramePlattform|netFrame als Plattform Menü] » [TippsundTricks|Tipps und Tricks] » Richtiges arbeiten mit Transaktionen | {searchbox} [Search.aspx?FullText=1|Erweiterte Suche]))) {BR} '''Beispiel:'''{BR} Mehrere Anweisungen in einer Transaktion kapseln 1. Dieses Beispiel zeigt wie man richtig mehrere Anweisung in eine Transaktion kapselt und diese{BR} bei einem Fehler zurücksetzt.{BR} {BR} <code sql> 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 </code> {BR} '''Vorsicht:'''{BR} Wenn dies nicht richtig gemacht wird kann es sein dass trotz Fehlers Teile der SQL Anweisung ausgeführt werden. Falls die Anweisung zweimal{BR} hintereinander aufgerufen werden sollte, müssen sie ein “GO” am Ende hinzufügen, damit der Server die Anweisung teilen kann.{BR} '''Beispiel 2:''' <code sql> -- 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 </code> '''Achtung!''' Funktioniert erst ab SQL Server 2005.
ScrewTurn Wiki
version 3.0.1.400. Some of the icons created by
FamFamFam
.