Code:
sqlConnection1.Open(); SqlCommand command = sqlConnection1.CreateCommand(); SqlTransaction transaction; transaction = sqlConnection1.BeginTransaction("SampleTransaction"); command.Connection = sqlConnection1; command.Transaction = transaction; command.CommandText = "DROP TABLE [dbo].[Assistenten]"; command.ExecuteNonQuery(); command.CommandText = "Insert into Assistenten(PersNr, Name) VALUES (101, 'Peter Muster')"; command.ExecuteNonQuery(); transaction.Rollback();
Im Beispiel lösche ich die Tabelle Assistenten und versuche danach einen neuen Assistenten anzulegen. Das klappt natürlich an dieser Stelle nicht, weil es die Tabelle nicht mehr gibt.
Mache ich nun ein Rollback, so ist die Tabelle wieder da. Wie geht das?
Ich meine löscht er sie nur temporär und weiß dann, dass er keine neue Daten einspielen kann? Und bei einem Rollback schmeißt er die Änderungen dann einfach weg?
Weil die Daten die ursprünglich in der Tabelle waren sind auch noch in Assistenten enthalten.
Wäre nett, wenn mir das jemand mal genauer erklären könnte.
So wie ich das jetzt verstehe, kann ich also eine Transaktion eröffnen,
100 Änderungen am Schema machen (Tabellen erstellen, löschen, Trigger erstellen...)
und dann entweder die Transaktion comitten (dann wären ALLE Änderungen durchgeführt) oder ein Rollback durchführen (wodurch alle Änderungen einfach verworfen werden)
Ist das so korrekt?
Comment