Herkese Merhaba,
Bu makalemizde bir SQL Server bileseni olan Triggeri nasil kullanacaginizdan bahsedecegim.
Trigger nedir öncelikle bundan biraz bahsedeyim. Türkçe karsiligi tetikleyici olan trigger SQL Server üzerinde bir companent olarak bulunur. Kullanim amaci ise bir islem yaptiginiz sirada belirlediginiz farkli bir islemi otomatik olarak yapmaktir.
Trigger kullanimina verecegimiz en iyi örneklerden bir tanesi Ürünler ve Satilan Ürünleri içerisinde tuttugumuz bir veri tabani olacaktir. Ürünler tablomuzda bulunan ürünlerden bir tanesi satildigi anda Satilan Ürünler tablomuza bu ürünün bilgileri ve kaç adet satildigi eklenecektir. Satilan Ürünler tablomuza bir ürün eklendigi sirada bu üründen satilan adet sayisinin Ürünler tablosundaki stok alanindan çikartilmasi gerekmektedir. Bu islemi basit bir Trigger kullanarak yapabiliriz.
O halde örnegimize geçelim.
Öncelikle Ürünlerimizi ve Satilan Ürünlerimizi içerisinde tutacagimiz veri tabanimizi ve tablolarimizi olusturalim :
Create Database Urunler
go
use Urunler
go
Create Table Urunler(
ID int identity primary key,
UrunAd nvarchar(MAX),
Stok int
)
go
Create Table SatilanUrunler(
ID int identity primary key,
UrunID int foreign key references Urunler(ID),
SatisAdet int
)
Tablolarimizi olusturduk simdi içerisine birkaç adet veri girelim :
Insert Into Urunler (UrunAd,Stok) values ('Bilgisayar',20),('Telefon',30),('Yazici',15),('Klavye - Mouse',50),('Kulaklik',40),('Tablet',35)
Verilerimizide ekledigimize göre simdi triggerimizi olusturabiliriz.
Olusturacagimiz Trigger Satilan Ürünler tablosunda bir Insert islemi gerçeklestiginde tetiklenecek ve Satilan Ürünün ID si üzerinden Ürünler tablosundan stok sayisini azaltacak.
Triggerimizi olusturalim :
Create Trigger stok_Guncelle -- Olusturacagimiz triggerin ismini belirleyelim.
ON SatilanUrunler -- Hangi tabloda islem gerçeklestikten sonra çalisacagini belirtelim.
AFTER INSERT -- Burada yazdigimiz After belirttigimiz islem gerçeklestikten sonra triggerin çalisacagi anlamina gelir. After yerine kullanacagimiz For ise islem gerçeklesirken triggerimizi çalistirir. Insert ise hangi islemden sonra triggerimizin çalisacagini belirler. Örnek olarak Insert, Update ve Delete islemleri verilebilir.
AS
Declare @urunID int -- Insert islemi gerçeklestiginde satilan ürünün idsini almak için int türünde bir degisken tanimliyoruz.
Declare @satisAdet int -- Satilan ürün adedini içinde tutacagimiz int türünde bir degisken daha olusturuyoruz.
Select @urunID = UrunID, @satisAdet = SatisAdet from inserted -- Insert islemi gerçeklesen tablodan eklenen urunID ve satis adedini tanimladigimiz degiskenlere atiyoruz.
Update Urunler set Stok = Stok - @satisAdet where ID = @urunID -- Son olarak Urunler tablomuzda satilan ürünün idsi ile eslesen ürünün stok adedini satis adedi kadar azaltiyoruz.
Sonuç :
Bilgi Paylastikça Çogalir.
Yazılım Geliştirici & Yazılım Uzmanı