Bir işlemi ne zaman commit ya da rollback yapacağını seçmek
Çalıştığın bankada, bakiyesi 5.000 \(’ın altında olan hesaplara 100 \) verilmesine karar verildi. Ancak banka müdürü, 5.000 $’ın altında 200’den fazla hesap varsa bu paranın verilmesini istemiyor.
Sen de bu 100 $’ı vermek için bir betik hazırlıyorsun ve bunu yapmanın çeşitli yolları arasından bir işlem (transaction) başlatıp bakiyesi 5.000 $’ın altındaki her hesabı güncellemeyi seçiyorsun. Ardından, @@ROWCOUNT fonksiyonunu kullanarak güncellemeden etkilenen satır sayısını kontrol ediyorsun. Bu sayı 200’den büyükse işlemi geri alıyorsun (rollback). Aksi halde işlemi onaylıyorsun (commit).
Peki betiği nasıl hazırlarsın?
Bu egzersiz
SQL Server'da İşlemler ve Hata Yönetimi
kursunun bir parçasıdırEgzersiz talimatları
- İşlemi başlat.
- Etkilenen satır sayısının 200’den büyük olup olmadığını kontrol et.
- Etkilenen satır sayısı 200’den fazlaysa işlemi geri al (ROLLBACK).
- Etkilenen satır sayısı 200’den küçük veya eşitse işlemi onayla (COMMIT).
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
-- Begin the transaction
___ ___;
UPDATE accounts set current_balance = current_balance + 100
WHERE current_balance < 5000;
-- Check number of affected rows
IF @@ROWCOUNT > ___
BEGIN
-- Rollback the transaction
___ ___;
SELECT 'More accounts than expected. Rolling back';
END
ELSE
BEGIN
-- Commit the transaction
___ ___;
SELECT 'Updates commited';
END