Bana göre uzun sayılabilecek bir aradan sonra tekrardan sizlerleyiz efendim.
Bu sefer lokal değişkenlerin transaction yapısı içerisindeki durumunu hep birlikte inceleyeceğiz. Öncelikle hatırlayamanlar için transaction yapısını hatırlatalım:
BEGIN TRAN
--Ara işlemleriniz
COMMIT TRAN
--yada
ROLLBACK TRAN
Bu hatırlatmadan sonra asıl konumuz olan lokal değişkenlerin transaction yapısındaki durumuna dönelim. Bunun için birbirine çok benzer iki örnek üzerinde duralım:
Örnek-1:
DECLARE @OnlineZiyaretci INT
SET @OnlineZiyaretci = 10
PRINT @OnlineZiyaretci --OnlineZiyaretci değeri 10
BEGIN TRAN
SET @OnlineZiyaretci = @OnlineZiyaretci + 1
PRINT @OnlineZiyaretci --OnlineZiyaretci değeri 11
ROLLBACK TRAN
PRINT @OnlineZiyaretci -- Burdaki değeri tahmin edin?
GO
Örnek-2:
DECLARE @OnlineZiyaretci INT
SET @OnlineZiyaretci = 10
PRINT @OnlineZiyaretci --OnlineZiyaretci değeri 10
BEGIN TRAN
SET @OnlineZiyaretci = @OnlineZiyaretci + 1
PRINT @OnlineZiyaretci --OnlineZiyaretci değeri 11
COMMIT TRAN
PRINT @OnlineZiyaretci -- Burdaki değeri tahmin edin?
GO
Normal şartlarda bir kayıt yada kayıt kümesi için rollback olduğunda o kayıtlar eski haline döner; commit olduğunda ise transaction blok içerisinde aldığı son değerleri alır .
Eminim bir çoğunuz aynı mantıkla @OnlineZiyaretci değişkeninin örnek-1 için 10; örnek-2 için ise 11 alacağını tahmin etmişsinizdir. Kodu denerseniz tahminizde yanıldığınızı; her iki durumda da @OnlineZiyaretci değerinin 11 olduğunu göreceksiniz. Bunun nedeni lokal değişkenlerin Transaction yapısından etkilenmemeleri!
Bir sonraki yazıda görüşünceye dek bol SQL'li günler diliyorum.
Hiç yorum yok:
Yorum Gönder