Sql Server etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Sql Server etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

24 Ağustos 2017 Perşembe

Trigger Kullanımı - After Trigger

Trigger yani tetikleyici kullanımlarına bir kaç örnek verelim. After triggerlar olay gerçekleştikten sonra devreye giren triggerlardır. Bu olaylar ekleme silme ya da güncelleme olabilir. İşlemler genel olarak sanal tablo olan inserted ve deleted tabloları üzerinden gerçekleştirilir.

Ekleme işleminden sonra devreye giren trigger örneği;



ALTER TRIGGER ekle -- trigger Adi
ON Ogretmenler -- hangi tablo icin tetiklenecek
AFTER INSERT -- hangi islem icin tetiklenecek
AS
declare @ad nvarchar(50) set @ad=(select ad from inserted) -- eklenen verileri degiskene ata.
declare @soyad nvarchar(50) set @soyad = (select soyad from inserted)
INSERT INTO Log VALUES(GETDATE(),@ad+' '+@soyad +' adlı kişi ' +CONVERT(VARCHAR(11), GETDATE(), 106) +'tarihinde eklenmiştir.') -- degiskenleri log tablosuna ekle.

Silme işleminden sonra devreye giren trigger örneği;



ALTER TRIGGER sil -- trigger Adi
ON Ogretmenler -- hangi tablo icin tetiklenecek
AFTER DELETE -- hangi islem icin tetiklenecek
AS
declare @ad nvarchar(50) set @ad=(select ad from deleted) -- eklenen verileri degiskene ata.
declare @soyad nvarchar(50) set @soyad = (select soyad from deleted)
INSERT INTO Log VALUES(GETDATE(),@ad+' '+@soyad +' adlı kişi ' +CONVERT(VARCHAR(11), GETDATE(), 106) +' tarihinde silinmiştir.') -- degiskenleri log tablosuna ekle.

Güncelleme işleminden sonra devreye giren trigger örneği (önce delete sonra insert);



CREATE TRIGGER guncelle -- trigger Adi
ON Ogretmenler -- hangi tablo icin tetiklenecek
AFTER UPDATE -- hangi islem icin tetiklenecek
AS
declare @eskiAd nvarchar(50) set @eskiAd=(select ad from deleted) -- eski veri sanal tablodan alindi.
declare @yeniAd nvarchar(50) set @yeniAd=(select ad from inserted) -- yeni veri sanal tablodan alindi.
declare @eskiSoyad nvarchar(50) set @eskiSoyad = (select soyad from deleted)
declare @yeniSoyad nvarchar(50) set @yeniSoyad = (select soyad from inserted)
INSERT INTO Log VALUES(GETDATE(),@eskiAd+' '+@eskiSoyad +' adlı kişi '  
+CONVERT(VARCHAR(11), GETDATE(), 106) +' tarihinde '+@yeniAd + ' ' + @yeniSoyad 
 +' şeklinde düzenlenmiştir.') -- degiskenleri log tablosuna ekle.
Paylaş:

6 Ağustos 2017 Pazar

Scope_Identity Nedir? Kullanımı

Sql Server'da identty alanların takip edilmesi için üç yöntem vardır. Bunlar tabloya eklenen son identity alanının değerini döndürür.

  • @@IDENTITY; Trigger yoksa önerilir.
  • SCOPE_IDENTITY(); Trigger varsa önerilir.
  • IDENT_CURRENT

Bunlardan sık kullanılan Scope_identity örneğine bakalım.



Veritabanında kullanıcı tablosunda identty KullaniciId alanı bulanmakta. Amaç tabloya veri eklendiğinde bu identty alanda oluşan int sayıyı veri eklendiği an öğrenmektir. Aşağıdaki sorguyu çalıştırdığımızda bize veritabanında oluşan yeni kullanıcının ıd değerini döndürmektedir.






Ayrıca;

declare @id int
set @id =  SCOPE_IDENTITY()


denilerek bir değişkene elimizdeki ıd değeri atanabilir.
Paylaş: