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

Bu blogdaki popüler yayınlar

En İyi 20 Hacker Duvar Kağıtları