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.