SQL TRIGGER Kullanimi
SQL TRIGGER Kullanimi
Database üzerinde bir işlem yapıldığında otomatik olarak arka planda başka bir işlem yapılmasını sağlayan veritabanı nesnesidir.
/*
CREATE TRIGGER <triggerAdi>
ON <tabloAdi>
<onceMiSonraMi> <islemTuru> --->>Instead of - After
AS
<işlemler>
*/
--SİPARİŞ DETAYLARI(Order Details) TABLOSUNA BİR KAYIT EKLENDİĞİNDE OTOMATİK OLARAK GİRİŞİ YAPILAN SİPARİŞ DETAYININ STOKTAKİ MİKTARDAN DÜŞÜLMESİNİ SAĞLAYAN TRIGGER
CREATE TRIGGER TRG_StokGuncelle
ON [Order Details]
AFTER INSERT -- EKLENDİKTEN SONRA
AS
Declare @proID int, @adet int
SELECT @proID=ProductID,@adet=Quantity FROM inserted
UPDATE Products SET
UnitsInStock -= @adet
WHERE ProductID = @proID
INSERT INTO [Order Details]
(OrderID,ProductID,UnitPrice,Quantity,Discount)
VALUES
(10250,2,10,10,0)
ÜRÜNLER TABLOSUNDAN BİR KAYIT SİLMEYE ÇALIŞTIĞIMIZDA ÜRÜNÜ SİLMEK YERİNE "DISCONTINUED" DEĞERİNİ 1 YAPAN TRIGGER
--Discontinued (Silinmiş mi kolonui, 0 ve 1 değerini alır. Yani evet veya hayır - True, False)
GO
CREATE TRIGGER TRG_UrunSilme
ON Products
INSTEAD OF DELETE -- SİLİNMEDEN ÖNCE
AS
DECLARE @proID int
SELECT @proID=ProductID FROM deleted
UPDATE Products SET Discontinued = 1
WHERE ProductID = @proID
DELETE FROM Products WHERE ProductID = 1
--Silinmemiş ürünlerim
SELECT * FROM Products WHERE Discontinued = 0
GO
--KATEGORİLR TABLOSUNDAKİ 1 NOLU KAYDI KORUMA ALTINA ALAN TRIGGER
ALTER TRIGGER TRG_KaydıKoru
ON Categories
INSTEAD OF DELETE
AS
DECLARE @catID int
SELECT @catID=CategoryID FROM deleted
IF(@catID = 1)
BEGIN
PRINT 'KAYDI SİLMENİZE İZİN VEREMEM!'
END
ELSE
BEGIN
DELETE FROM Categories WHERE CategoryID = @catID
END
--Sağlaması
DELETE FROM Categories WHERE CategoryID = 17
--DATABASE'E YENİ TABLO EKLETMEYEN TRIGGER
GO
CREATE TRIGGER TRG_TabloEkletmeyen
ON DATABASE
FOR Create_Table
AS
PRINT 'YENİ TABLO OLUŞTURAMAZSINIZ'
ROLLBACK
--sağlaması
CREATE TABLE DENEME
(
KOLON1 nvarchar(50)
)
SQL Trigger |
SQL TRIGGER Kullanımı |
Yorumlar
Yorum Gönder