MSSQL Server 2008 R2 und Transactions/SavePoints
-
Hallo zusammen,
ich verstehe den MS SQL Server nicht
Folgendes SQL Skript sollte doch eigentlich eine Zeile in eine Tabelle einfügen, oder verstehe ich nicht, wie sich unter MS SQL Transaktionen und Savepoints verhalten?-- Transaktion starten BEGIN TRANSACTION GO -- Zeile in db einfügen INSERT INTO dummy ( name ) VALUES( 'Zeile 1' ) GO -- SavePoint erstellen SAVE TRANSACTION SavePoint01 GO -- Zeile in db einfügen INSERT INTO dummy ( name ) VALUES( 'Zeile 2' ) GO -- Zustand von SavePoint01 wiederherstellen ROLLBACK TRANSACTION SavePoint01 GO -- Transaktion beenden und Änderungen übernehmen COMMIT TRANSACTION GO
Theorie:
'Zeile 1' wird erzeugt, da sie vor dem SavePoint in die db eingetragen wird.
'Zeile 2' wird nach dem SavePoint01 erzeugt und mit dem Rollback zu SavePoint01 wieder verworfen und landet damit nicht in der db.Praxis:
Weder 'Zeile 1' noch 'Zeile 2' werden in die db eingetragen.Wie kriege ich das unter Theorie erwartete Verhalten hin?
-
Das muss mMn. so funktionieren.
-
Jau, tut´s auch, bin Opfer meiner Schusseligkeit geworden. Man sollte schon drauf achten, dass man sich das Ergbnis der Tabelle anschaut, in die man wirklich schreibt, und nicht eine andere
-
Sehr gut! Wollte es heute eigentlich ausprobieren, hab dann aber vergessen. So kann ich mir das sparen.
Danke für die Richtigstellung