Herkese merhaba,
Bu yazıda SQL Server’da trigger’da insert, update ve delete’nin birlikte kullanılması hakkında bilgi vereceğim.
SQL Server’da bazı durumlarda bir trigger içerisinde insert, update ve delete’yi kullanmak isteyebiliriz.
İşlemi anlamak için örnek bir tablo oluşturalım.
1 2 3 4 |
CREATE TABLE TestTrigger( id INT PRIMARY KEY IDENTITY(1,1), Mesaj NVARCHAR(50) ) |
Tabloyu oluşturduysanız şimdi sıra triggerımızı oluşturmaya geldi.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
CREATE TRIGGER Insert_Update_Delete_Trigger ON dbo.TestTrigger FOR INSERT, UPDATE, DELETE AS DECLARE @INSERTED SMALLINT, @DELETED SMALLINT, @UPDATESTATUS SMALLINT; BEGIN IF EXISTS (SELECT * FROM Deleted) SET @DELETED = 1; ELSE SET @DELETED = 0; IF EXISTS (SELECT * FROM Inserted) SET @INSERTED = 1; ELSE SET @INSERTED = 0; IF @DELETED = 1 AND @INSERTED = 1 SET @UPDATESTATUS = 0; -- Updated ELSE IF @INSERTED = 1 AND @DELETED = 0 SET @UPDATESTATUS = 1; -- Inserted ELSE IF @DELETED = 1 AND @INSERTED = 0 SET @UPDATESTATUS = 2; -- Deleted ELSE SET @UPDATESTATUS = -1; -- Unknown IF (@UPDATESTATUS = 0) BEGIN PRINT 'TestTrigger tablosunda güncelleme işlemi yapıldı'; END; ELSE IF (@UPDATESTATUS = 1) BEGIN PRINT 'TestTrigger tablosuna veri ekleme işlemi yapıldı'; END; ELSE IF (@UPDATESTATUS = 2) BEGIN PRINT 'TestTrigger tablosundan veri silme işlemi yapıldı'; END; ELSE BEGIN PRINT 'İşlemin türü bilinmiyor'; END; END; |
Triggerımızı başarıyla oluşturduysanız şimdi tablomuza veri ekleme kısmına geçelim.
Oluşturmuş olduğunuz trigger herhangi tablo üzerinde başka bir işlem (insert, update, delete) yapmamakta. SQL Server ekranına yapılan işlem ile ilgili mesaj vermektedir.
Konuyu anlamak için aşağıdaki işlemleri sıra ile deneyin.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
--TestTrigger tablosuna veri ekleme işlemi. INSERT INTO dbo.TestTrigger ( Mesaj ) VALUES (N'deneme' -- Mesaj - nvarchar(50) ) --TestTrigger tablosunda veri güncelleme işlemi. UPDATE dbo.TestTrigger SET Mesaj='Yeni mesaj' WHERE id=1 --TestTrigger tablosunda veri silme işlemi. DELETE dbo.TestTrigger WHERE id=1 |
Kodları sıra ile çalıştırdığınızda aşağıdaki gibi bir sonuç alacaksınız.
Örnek olması açısından TestTrigger tablosuna veri ekleme işlemi yaptıktan sonra işlemin sonucunun ekran görüntüsünü sizlerle paylaşacağım.
Görüldüğü üzere trigger ilgili şarta (Insert) girdi ve o şartla ilgili bilgi mesajını ekranda gösterdi.
Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.
