Merhaba Linkedin’de ilk yazım eğer bir hata varsa şimdiden affola zaman önemli hemen sadede gelelim.
Bir update işlemi yapacaksınız fakat sonrasında silinen kayıtları görmek istiyorsunuz veya Loglamak istiyorsunuz. Eski halini değiştirilen kayıtlar veya yeni halini güncellenen veriler şeklinde programda ekrana basmanız lazım. Yapılan değişikliklere göre yapmanız gereken başka işlemler var vs.
Bu gibi durumlarda ayrı bir recordset açılıp tekrar bir select çekilir, loglamak için bir çok yöntem var ama ilk aklınıza trigger geldi değil mi?
Eğer daha önce kullanmadıysanız işinize oldukça yarayacak bir şey var. Output

Klasik bir update cümlesi ve sonucu aşağıdaki şekildedir.
Oysaki bir ilave ile…

Set cümlesinin artından yazacağınız output deleted.* kayıtların eski halini listeleyecektir.
Bu sayede ayrı bir select, recordset cümlesi yazmadan. Programınızda değiştirmiş olduğunuz kayıtlar diyerek kullanıcı önüne liste verebilirsiniz. Kullanıcılara update’den sonra kayıtların yeni halini göstermek isterseniz sadece INSERTED.* olarak değiştirmeniz yeterlidir.
Eğer alanın eski ve yeni halini raporlamak istiyorsanız aşağıdaki şekilde kullanabilirsiniz

Veriler ile ilgili daha sonra yapmanız gereken bir şey varsa bunu geçici veya kalıcı bir tabloya kayıt etmek isteyebilirsiniz. Bunun içinde INTO deyimi işinizi oldukça kolaylaştıracaktır.

Eklenen ve silinen kayıtlarda aynı şekilde OUTPUT kullanabilirsiniz.

Bu sayede eklenen kayıtlar için listeyebilir ve kullanıcıya gösterebilirsiniz.

Silinen kayıtları görebilir ve hüzünelebilirsiniz.
Hüzünlenmemek ve kullanıcı istediği anda silinen kayıtları geri almak için kalıcı bir kopya oluşturmakda isteyebilirsiniz. Aşağıdaki gibi bir yol izlemeniz yeterli olacak.

Zaman buldukça yazı dizisine devam edeceğim. Sormak istediğiniz bir şey olursa çekinmeden irtibat kurabilirsiniz.