Forum

Sql Server Update S...
 
Bildirimler
Hepsini Temizle

Sql Server Update Sorunu

4 Yazılar
2 Üyeler
0 Reactions
4,906 Görüntüleme
(@BakiAbaci)
Gönderiler: 20
Eminent Member
Konu başlatıcı
 

Merhaba,

Sql server'da 2 adet tabloyu aynı anda update yapmak istiyorum. Syntax yapısından dolayı bunu gerçekleştiremiyorum, TRY..CATCH açarak Transaction içerisinde 2 tablo içinde Update komutlarını ayrı ayrı yazarak süreci tamamlamak çözüm olarak forumlarda önerilmiş. Ama tek komutta şu işi tamamlamak TRY..CATCH  TRANSACTION açmakla uğraşmadan direk bu işlemi gerçekleştirmek istiyorum. Bu konu hakkında yardımlarınızı rica ederim.

İyi çalışmalar.

 
Gönderildi : 04/05/2018 15:29

(@birolaydugan)
Gönderiler: 867
Prominent Member
 

Update

go

update

go

denedinizmi ?

 
Gönderildi : 05/05/2018 03:30

(@BakiAbaci)
Gönderiler: 20
Eminent Member
Konu başlatıcı
 

Birol abi dönüşün için teşekkür ederim.

Dediğinize benzer mantıkda en sağlıklı güncellemeyi aşağıda verdiğim örnekle yapılabiliyor. Olası bir durumda herhangi bir güncelleme çalışmaz ise catch'e düşüp rollback yaparak kayıt bozukluğunun önünede geçebiliyorsunuz. Sizin aşina olduğunuz koddan örnek vereyim..

     BEGIN TRY
    BEGIN TRANSACTION

        UPDATE E SET E.TRCODE=5 FROM
        LG_001_01_EMFICHE E INNER JOIN
        LG_001_01_EMFLINE L ON E.LOGICALREF=L.ACCFICHEREF
        WHERE E.LOGICALREF=336
        --================================================
        UPDATE L SET L.TRCODE=5 FROM
        LG_001_01_EMFICHE E INNER JOIN
        LG_001_01_EMFLINE L ON E.LOGICALREF=L.ACCFICHEREF
        WHERE E.LOGICALREF=336

    COMMIT
    END TRY
    BEGIN CATCH
     ROLLBACK
    END CATCH

Buraya kadar herşey güzel, benim istediğim 2 tabloyada aynı anda Update işlemini gerçekleştirip işlemi tamamlamak. Tamamen tembelliğe kaçmaya çalışıyorum. 🙂

İyi çalışmalar.

 
Gönderildi : 08/05/2018 15:10

(@birolaydugan)
Gönderiler: 867
Prominent Member
 

aşadaki şekilde yapabiliyorsun

UPDATE LG_800_ITEMS SET SPECODE='DENMEE' WHERE LOGICALREF=2

UPDATE LG_800_CLCARD SET SPECODE='DENMEE' WHERE LOGICALREF=2

bence çok kasma 🙂 , ha illa kascam diyorsan o zaman join yerine subquery yada cursor kullan.

 
Gönderildi : 08/05/2018 16:09

Paylaş: