SQL Transaction Kavramı

Önceki yazımda ado.net için transaction kavramına bakmıştık. Şimdi de SQL server tarafını inceleyelim.

Transaction ın neden kullanılması gerektiğini konuşmuştuk. Bu yazımda hemen örneğe gececeğim.
Yine Northwind örnek veritabanı üstünden gideceğim. Yorum satırlarıyla kodumuza bakalım.

USE Northwind
GO
-- t1 isminde transaction nesnesini başlattım.
BEGIN TRANSACTION t1;
-- TRY - Catch başlatıyoruz.
BEGIN TRY
-- Employess tablosunda null olamayan birde LastName kolunu var fakat ben o kolunu yazmıyorum. Yani işlem hata alacak.
 INSERT INTO Employees (FirstName) VALUES ('Ahmet')
 -- TRY'ı kapatıp catch bloğunu açıyoruz.
END TRY
BEGIN CATCH
-- Bu select sorgusunu yazmamız gerekmiyor fakat hatanın tam ayrıntısı için geriye bir table döndürür. Ve kontrol edebiliriz.
 SELECT
 ERROR_NUMBER() AS ErrorNumber
 ,ERROR_SEVERITY() AS ErrorSeverity
 ,ERROR_STATE() AS ErrorState
 ,ERROR_PROCEDURE() AS ErrorProcedure
 ,ERROR_LINE() AS ErrorLine
 ,ERROR_MESSAGE() AS ErrorMessage

-- Yapılan işlemleri geri sardırıyoruz.
IF @@TRANCOUNT > 0

ROLLBACK TRANSACTION t1;
END CATCH;
-- Eğer sorgumuz hatasızsa işlemin gerçekleşmesi için commit ediyoruz. IF ile kontrol etmemin sebebi transactionın açık olup olmadığını kontrol ediyorum
IF @@TRANCOUNT > 0
 COMMIT TRANSACTION t1

Hata aldğım çıktı şu şekilde;

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s