Transaction Yapısı İle Güncelleme | MsSql

Merhaba, Sql Server üzerindeki bir veritabanında zaman zaman yapılan güncellemelerde hatalı çalıştırılan script nedeniyle planlanandan fazla kayıt güncellenmesi durumları oluşabiliyor. “Arkadaşlar ben bir halt yedim galiba…” şeklinde ortaya çıkan bu gibi durumların önüne geçmek için belki Sql’deki transaction yapısı kullanılabilir.

USE TestVeritabani;
GO
DECLARE @EtkilenenKayitSayisi INT;
BEGIN TRANSACTION;
 
BEGIN TRY
    UPDATE Customer
	SET Company = 'JJ', 
	    ChangedBy = 'TEST'
	WHERE Company = 'SL';
	SET @EtkilenenKayitSayisi = @@ROWCOUNT;
END TRY
BEGIN CATCH
    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;
 
    IF @@TRANCOUNT > 0 BEGIN
        ROLLBACK TRANSACTION;
	END;
END CATCH;
 
IF @@TRANCOUNT > 0 AND @EtkilenenKayitSayisi < 10 BEGIN
	PRINT 'Islem basariyla tamamlandi. (' + CAST(@EtkilenenKayitSayisi AS VARCHAR) + ')';
    COMMIT TRANSACTION;
END;
ELSE BEGIN
	PRINT 'Islem geri alindi. Kayit sayisini kontrol ediniz. (' + CAST(@EtkilenenKayitSayisi AS VARCHAR) + ')';
	ROLLBACK TRANSACTION;
END;
GO

Selamlar.

Leave a Reply

Your email address will not be published. Required fields are marked *