Bir önceki yazımda aynı anda yapılan transaction işlemlerinden bahsetmiştim. Ayrıca o yazımda transaction nedir, ne işe yarar anlatmıştım. Dolayısı ile bu yazıyı okumadan önce o yazıya bir göz atmanızda fayda var.
Transaction Nedir, Nasıl Kullanılır?
Bu yazımda ise yapılan işlemlerin geri alınmasını sağlayan ROLLBACK TRANSACTION’dan bahsetmek istiyorum. ROLLBACK ile transaction içinde yapılan işlemlerin geri alınması sağlanır. Söz dizimi olarak kullanımı aşağıdaki gibidir:
BEGIN TRAN veya TRANSACTIONdurum1
durum2
ROLLBACK [TRAN veya TRANSACTION]
Şimdi örnekle pekiştirelim. AdventureWorks2012 veri tabanı üzerinde çalışacağım. Öncelikle var ise silmek ve yeniden oluşturmak için aşağıdaki kodu yeni bir query penceresinde çalıştırınız. Böylelikle demo tablomuz oluşacak.
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[demoTransaction]') AND type in (N'U')) DROP TABLE [dbo].[demoTransaction]; GO CREATE TABLE dbo.demoTransaction (col1 INT NOT NULL); GO
Sorgum sonucunda; Command(s) completed successfully. mesajını alıyorum. İşlem tamam, şimdi bir transaction oluşturalım.
BEGIN TRANSACTION INSERT INTO dbo.demoTransaction (col1) VALUES (1); INSERT INTO dbo.demoTransaction (col1) VALUES (2); COMMIT TRANSACTION
Sorgum sonucunda; (1 row(s) affected)
(1 row(s) affected)
mesajlarını alıyorum.
Şimdi bir bakalım kaydedilmiş mi?
SELECT col1 FROM dbo.demoTransaction;
Şimdi birde ROLLBACK TRANSACTION yazalım.
BEGIN TRANSACTION INSERT INTO dbo.demoTransaction (col1) VALUES (3); INSERT INTO dbo.demoTransaction (col1) VALUES (4); ROLLBACK TRANSACTION
Sorgum sonucunda; (1 row(s) affected)
(1 row(s) affected)
mesajlarını alıyorum.
Bir bakalım ne olmuş?
SELECT col1 FROM dbo.demoTransaction;
Şimdi görüleceği üzere Sorgum sonucunda; (1 row(s) affected)
(1 row(s) affected)
mesajlarını aldım ancak ROLLBACK TRANSACTION olduğu için işlem yapılıyor ve geri alınıyor. Dolayısı ile son durum da bu oluyor.
Çok Teşekuller tanıtım için fayda oldu