TETİKLEYİCİ. Tetikleyici Ne Zaman Kullanılır? Çeşitli amaçlara uygun olarak tetikleyiciler kullanılabilir.

Benzer belgeler
Elbistan Meslek Yüksek Okulu GÜZ Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU

TRIGGER. Trigger lar, tablo üzerinde tanımlanabilen ve bu tablo üzerinde bir işlem gerçekleştiğinde tetiklenen programlama ögeleridir.

VERİ TABANI ve YÖNETİMİ

SQL TRIGGERS (Tetikleyiciler)

EXISTS VE NOT EXISTS fonksiyonları

Bir çeşit prosedür. Ancak bu prosedür kendiliğinden çalışır. Çalışması için tabloya veri eklemek, veri silmek, veri değiştirmek yeterlidir.

Veri Tabanı ve Yönetimi

Tetikleyiciler (TRIGGER) Tetikleyiciler ne zaman kullanılırlar. Ardı Sıra Tetikleyiciler (After Triggers) Örnek

Bu işleçlerin dışında, aşağıda belirtilen karşılaştırma işleçlerinden de yararlanılır.

Veritabanı Tasarımı. Sütun Değerlerini Güncelleme ve Satırları Silme

-- işareti tek satırlık açıklamalarda kullanılır. Açıklama olarak yazılan satırın önüne konulması yeterlidir.

Elbistan Meslek Yüksek Okulu GÜZ Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU

VERİ TABANI YÖNETİM SİSTEMLERİ-II

SORGULAR VE ÇEŞİTLERİ II

VERİTABANI. SQL (Structured Query Language)

VERİTABANI Veritabanı Yönetimi

T.C. MİLLÎ EĞİTİM BAKANLIĞI MEGEP (MESLEKÎ EĞİTİM VE ÖĞRETİM SİSTEMİNİN GÜÇLENDİRİLMESİ PROJESİ) BİLİŞİM TEKNOLOJİLERİ VERİTABANI YÖNETİMİ

Veritabanı Tasarımı. Kullanıcı Erişimini Kontrol Etme

SQL Komutları (2) Uzm. Murat YAZICI

20461C Querying Microsoft SQL Server Modül Seviye Belirleme Testi

Veritabanı sistemlerinde veri bütünlüğünü sağlayabilmek için CONSTRAINTS olarak adlandırılan bazı zorlayıcı ifadeler kullanılabilir.

Kullanıcı tanımlı fonksiyonlar SQL2000 ile gelen özelliklerden biridir. Fonksiyonlar tek bir değer veya tablo döndürmek için kullanılır.

KULLANICI TANIMLI FONKSİYONLAR

Tablolar Arası İlşikiler ve Alan Özellikleri Siparis.musteri_no musteri.musteri_no Siparis.urun_kodu musteri.urun_kodu

VERĐTABANI YÖNETĐM SĐSTEMLERĐ

Tablolar Arası İlşikiler ve Alan Özellikleri. Şekil 1. Magaza veritabanının tabloları ve tablolar arasındaki ilişkiler

VERİTABANI ve YÖNETİMİ

İNTERNET PROGRAMLAMA 2 A S P. N E T. Marmara Teknik Bilimler MYO / Hafta 5 Veri Tabanı İşlemleri

BİLİŞİM TEKNOLOJİLERİ

Yukarıdakilerden hangileri DML (Data Manipulation Language) ile gerçekleştirilir?

SORGULAR. Öğr.Gör.Volkan Altıntaş

BİLİŞİM TEKNOLOJİLERİ

5 SQL- Yapısal Sorgulama Dili. Veritabanı 1

Tavsiye Edilen Önhazırlık Temel SQL Server 2000 bilgisi edinmek.

Öğr. Gör. Cansu AYVAZ GÜVEN VERİTABANI-II. Değişken Tanımlama Ve Akış Kontrol Deyimleri

Tavsiye Edilen Önhazırlık Temel veritabanı kavramlar hakkında bilgi sahibi olmak. Hedefler Temel veritabanı güvenlik işlemlerini gerçekleştirebilmek

Sorgudan elde edilen değerin değişkenlere aktarılmasını sağlar. Sorgudan tek satır dönmesi gerekir. Çok satır dönerse hata verir.

T.C. MİLLÎ EĞİTİM BAKANLIĞI MEGEP (MESLEKÎ EĞİTİM VE ÖĞRETİM SİSTEMİNİN GÜÇLENDİRİLMESİ PROJESİ) BİLİŞİM TEKNOLOJİLERİ VERİTABANI YÖNETİMİ

ÜNİTE NESNE TABANLI PROGRAMLAMA I. Uzm. Orhan ÇELİKER VERİTABANI SORGULARI İÇİNDEKİLER HEDEFLER

Üst Düzey Programlama

8 Oracle da tablo yapısı içinde otomatik artan kolon yoktur. (identity kolon

T.C GAZİ ÜNİVERSİTESİ BİLİŞİM ENSTİTÜSÜ YÖNETİM BİLİŞİM SİSTEMLERİ ANA BİLİM DALI MS SQL KOMUTLARI VE MS SQL KOMUTLARI İLE İLGİLİ UYGULAMALAR

Veri Tabanı SQL Server ve Management Studio kurulum linkleri:

AYDES PROJESİ HIZLI RAPORLAR FORMU EĞİTİM DOKÜMANI

COMMIT: Oluşturulan transaction işlemi başarılı bir şekilde gerçekleştiğinde yapılan değişikliklerin veritabanına kalıcı olarak aktarılmasıdır.

Veritabanı Tasarımı. Veritabanı Hareketleri

DML işlemleri. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı May Öğr. Gör. Murat KEÇECĠOĞLU

YAYINLANAN RAPORLAR FORMU EĞİTİM DOKÜMANI

SQL PROGRAMLAMA. Bir batch, bir arada bulunan bir dizi SQL deyimidir. Batch ayıracı GO deyimidir.

Oracle da kullanılan veri tipleri:

Bölüm 4: DDL Veri Tanımlama Dili

VERİ TABANI ve YÖNETİMİ

SAKLI YORDAM (Stored Procedure) Sibel Somyürek

Data Programming SQL Language. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

Fonksiyonlar istenilen deger tipinde dönüs yapabilir. INT, VARCHAR deger döndürebileceğiniz gibi bir tablo da döndürebilirsiniz.

SQL Stored Procedure

Veri Bütünlüğü ve Constraint ler. Veritabanı 1

Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü Veri Tabanı ve Yönetimi (BİL 301)

SUNGURLU MESLEK YÜKSEKOKULU 5. T-SQL-2

VERİ TABANI YÖNETİM SİSTEMLERİ I

SQL Kod ile Tablo Oluşturma

SP_RENAMEDB eski_isim, yeni_isim VEYA SP_RENAMEDB 'eski isim', 'yeni isim'

T-SQL NEDİR? Microsoft T-SQL Transact-SQL

Yaptığımız web sitelerinin daha kullanışlı olması için veritabanı sistemleri ile bağlantı kurup ihtiyaca göre verileri okuyup yazmasını isteriz.

Bağlı Dosya Oluşturma Uygulaması

Öğr.Gör.Murat KEÇECĠOĞLU. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

Başlangıç Ayarları.

Öğr. Gör. Cansu AYVAZ GÜVEN VERİTABANI-II. Değişken Tanımlama Ve Akış Kontrol Deyimleri

1.adım : Sql serverda Stored procedure oluşturmamız gerekiyor. Şu adımları izliyoruz.

STORED PROCEDURE LER (Saklı Yordamlar)

VERİ TABANI YÖNETİM SİSTEMLERİ II. 5. SQL PROGRAMLAMADA CURSOR (İMLEÇ) ve TRIGGERS (TETİKLEMELER)

KULLANICI TANIMLI FONKSİYONLAR (Devam)

Elbistan Meslek Yüksek Okulu GÜZ Yarıyılı Ara Öğr. Gör. Murat KEÇECĠOĞLU

DAO İLE SQL KOMUTLARI. Sql komutlarını artık veri tabanında kullanmaktan başka çaremiz yok arkadaşlar. Şimdi bu sql derslerimize başlayalım.

AGSoft Okul Aidat Takip Programı Kullanım Kılavuzu

İLERİ VERİTABANI SİSTEMLERİ SUAT ÜSTKAN

BLG4134 Görsel Programlama III. Öğr. Grv. Aybike ŞİMŞEK

Veri tabanı içinde bulunan tablolardakibazı sütunlarda bulunan bilgilerin, herkes tarafından görülmesi istenmeyebilir.

Veritabanı Tasarımı. NOT NULL ve UNIQUE Kısıtlamaları Tanımlama

TESİ. indeks. söylenebilir?? bir ilişkidir d) Hiçbiri. veya somutlaştırılmış. düzeyidir? sağlayabilir? sına. d) Hepsi. olabilir? c) Verilerin d) Hepsi

KULLANICI TANIMLI FONKSİYONLAR (Devam)

YAPISAL SORGULAMA DİLİ (SQL)

3. Hafta Tablo İşlemleri BPR255 Veritabanı. Bu Derste Öğrenecekleriniz: 1. Tablo İşlemleri Kısıtlamalar (Constraints)

«BM364» Veritabanı Uygulamaları

VERİ TABANI YÖNETİM SİSTEMLERİ

Dinamik Kodlama. [X] [X] Yeni Fonksiyon

E-Posta Yönetimi. E-Posta Açma, Silme ve Yönetim Kılavuzu

Veritabanında Saklı Yordamlar: Bir Veritabanı Tasarımı ve Web Uygulaması

ÜNİTE NESNE TABANLI PROGRAMLAMA I. Uzm. Orhan ÇELİKER VERİTABANI SORGULARI İÇİNDEKİLER HEDEFLER

Bölüm 10: PHP ile Veritabanı Uygulamaları

ÖĞRENME FAALİYETİ 1 ÖĞRENME FAALİYETİ 1

BMB202. Veritabanı Yönetimi Ders 8. Stored Procedure (Saklı Yordamlar), Trigger (Tetikleyiciler), Transactions, Yetkilendirme (Authorization)

8 Aralık 2011 / Perşembe. Veri Tabanına Giriş

PostgreSQL ve PL/pgSQL

Orkestra Ürünler. Ana Sayfa / Orkestra Ürünler

FABREKA YAZILIM ELEKTRONİK DANIŞMANLIK TİC. LTD. ŞTİ.

SQL e Giriş. Uzm. Murat YAZICI

Güz Yarıyılı MT 487 Bilgisayarda Veri Yapıları Final Çalışma Soruları

Navigator Smart. Kullanıcı El Kitabı NETSİS

Genel Kavramlar. Bilgisayar ortamında işlenebilecek durumda bulunan kayıtlar. Birbiri ile ilişkili veriler topluluğu ve veriler arası ilişkiler

Transkript:

TETİKLEYİCİ Tetikleyici(trigger), SQL Server üzerinde herhangi bir işlem gerçekleştiğinde başka bir işlemin tetiklenmesi için kullanılır. Tetiklenecek işlem tamamen bizim belirlediğimiz çerçevede başka bir kayıt eklemek, rapor almak veya genelde kontrol mekanizmaları oluşturmak için kullanılabilir. Tetikleyici, bir çeşit özel Stored Procedure dür. Bir kaydın eklenmesi (INSERT), silinmesi (DELETE) veya değiştirilmesi (UPDATE) durumlarında otomatik olarak devreye girecektir. Tetikleyiciler, Query ekranında T-SQL kodu ile veya Management Studio ile oluşturulup yönetilebilirler. Tetikleyiciler, görünümler (View) ve tablolar üzerinde tanımlanabilir. Tetikleyici Ne Zaman Kullanılır? Çeşitli amaçlara uygun olarak tetikleyiciler kullanılabilir. Değişiklikleri takip etmek, Birincil anahtar üretmek, Karmaşık işkurallarınıgerçekleştirmek, E-posta atmak gibi olaylarıotomatik olarak yapmak, Standart hata mesajlarının dışındabirhata mesajıelde etmek, Veritabanıerişimlerini takip edebilmek, Nesnede meydana gelebilecek değişiklikleri takip ve engellemektir. Tetikleyiciyi Ateşleyen Olaylar Bir işlemin gerçekleşmesiniveya gerçekleşmeye başlamasınıtetikleyici ateşleyebilir. Tetikleyiciyi ateşleyen bir işlem ile karşılaşıldığında tetikleyici ile işlem bir blokta ele alınır. Bu blok, RAM de bulunan geçici hafıza bloğudur. Tetikleyici çalıştığı zaman Inserted ve Deleted adı verilen sahte tabloları kullanır. Bu tablolar tetikleyicinin ateşlendiği tabloyla eşdeğer alanlara sahiptir. Bunlar da mantıksal olarak RAM de bulunur. Asıl tabloya bir kayıt eklendiğinde ve tetikleyici ateşlendiğinde bu kayıt Inserted tablosuna da eklenir. Tablodan bir kayıt silindiğinde silinen kayıt Deleted sahte tablosuna da eklenir. Update işlemi ise önce silme (Delete) ve ardından bir kayıt ekleme (Insert) olarak ele alınır. Bir kayıt güncellendiğinde asıl kayıt Deleted sahte tablosuna, değişen kayıt da Inserted sahte tablosuna yazılır. Tetikleyici Türleri SQL Server'da iki farklı tür tetikleyici vardır. Bunlar After ve Instead Of tetikleyicileridir.

After Tetikleyicileri After tetikleyicileri, kendiyle ilişkili işlem gerçekleştikten hemen sonra ateşlenir. Veritabanındaki temel işlemler için (ekleme, silme ve güncelleme) After tetikleyicileri tanımlanabilir. Örneğin, yeni bir personel kaydı silindiğinde farklı tablolarda o personele ait diğer bilgilerin silinmesi After Deletete tikleyicisi ile sağlanabilir. Birden fazla tetikleyici, bir iş için tanımlanabildiği gibi, bir tetikleyici de birden fazla iş için tanımlanabilir.after tetikleyicileri, sadece tablolar için tanımlanabilir. Instead Of Tetikleyicileri Instead of tetikleyicileri, belirlenen işlem gerçekleşirken devreye girer ve kendi içinde tanımlanan komutları icra etmeye başlar. Yani, belirlenen işlemin yerine geçer. Instead of tetikleyicileri işlemlerin arasına girebildiğinden kontrol amaçlı kullanılabilirler. Örneğin, ekleme işlemi için tanımlanan bir tetikleyici, ekleme işleminden hemen önce araya girerek uygun koşulların sağlanıp sağlanmadığını kontrol edebilir. Tıpkı After tetikleyicileri gibi temel veritabanı işlemleri için Instead Of tetikleyicileri tanımlanabilir. Fakat, After tetikleyicileri sadece tablolar için tanımlanabilirkeninsteadof tetikleyicileri hem tablolar için hem de görünümler (views) için tanımlanabilirler. Tetikleyici Oluşturmak Tetikleyiciyi oluşturmak için CREATE TRIGGER ifadesi veya Managemet Studio da tablo altında bulunan Triggers klasörü üzerinde sağtıklayarak açılan menüden New Trigger komutu kullanılır. CREATE TRIGGER i kullanabilmek için sysadmin, db_owner veya db_ddladmin rolüne sahip olmak gerekir. Bir tetikleyici (trigger) başka bir tabloya erişecekse bu tablo için de tetikleyici oluşturan kullanıcının erişim izni veya güncelleme izni olmasıgerekir.

Yazılışı CREATE TRIGGER tetikleyici_adi ON tablo_adi FOR veya AFTER veya INSTEAD OF(INSERT veya UPDATE veya DELETE) AS Sql ifadeleri INSERT Tetikleyicisi Bir tablo üzerinde yeni kayıtlar girildikten sonra devreye giren tetikleyicidir. Insert tetikleyici devreye girdikten sonra Inserted tablosunda yeni eklenen kayıtların bir kopyası tutulur. Inserted tablosu, asıl tablonun yapısal bir kopyası olup tetikleyici sonlanana kadar saklanır. Eğer, bir tabloya birden fazla kayıt girildiyse tetikleyici her kayıt için ayrı ayrı devreye girmez. Tek seferde işlemi gerçekleştirir. Çünkü SQL Server, satır bazında tetikleyici desteği sağlamamaktadır. Örnek tablo_kitapbilgi tablosunda kitapların basım yılını otomatik olarak yazacak bir tetikleyici yazacağını varsayınız. Bunun için, bir tetikleyici oluşturmanız gerekmektedir. tablo_kitapbilgi tablosuna yeni bir kayıt girildiğinde ve kitap basım yılı boş geçildiğinde kitap basım yılı olarak 2007 değeri otomatik olarak yazılacaktır. Tetikleyiciyi yazdıktan sonra Execute ediniz. Artık tetikleyici, Tables klasörü altında oluşturulacak ve tetiklenmeye hazır hâle gelecektir.

tablo_kitapbilgi tablosunu açarak yeni bir kayıt giriniz ve basım yılı alanına değer girmeden Enter tuşuna basınız. Basım yılı alanını boş geçip Enter tuşunabastığınızda tetikleyici devreye girecektir. Eklenen kaydın son durumunu görmek için tabloyu Refresh etmeniz gerekir. Bunun için, Execute SQL simgesini tıklayarak ya da kapatıp açarak tabloyu yenileyiniz. Basım yılı alanına otomatik olarak 2007 değerinin yazıldığını göreceksiniz.

Uygulama : Calisan Tablosuna yeni bir kayıt eklendiğinde IseBaslamaTarihi bilgisi boş geçildiğinde sistem tarihini İşe Başlama Tarihi olarak alan Tetikleyiciye ait T-SQL komutları aşağıdaki gibidir. CREATE TRIGGER ISE_BASLAMA_TARIHI ON Calisan AFTER INSERT AS UPDATE Calisan SET IseBaslamaTarihi= GETDATE() WHERE Calisan.IDCalisan=(SELECT IDCalisan FROM inserted) Tabloya yeni bir kayıt eklendiğinde IseBaslamaTarihi alanı boş geçilirse otomatik olarak sistem tarihi ilgili alana aktarılacaktır. INSERT Calisan(AdiSoyadi) VALUES('MEHMET KALE') Tabloya kayıt eklemeden önceki görüntü Tabloya sadece AdiSoyadi bilgisi içeren bir kayıt eklendiğinde İseBaslamaTarihi bilgisi otomatik olarak eklenmiştir. DELETE Tetikleyicisi Tablodan bir kayıt silindiğinde otomatik olarak yapılması istenen işlemler için DELETE tetikleyicisi kullanılır. DELETE tetikleyicisi çalıştıktan sonra silinen kayıt Deleted sahte tablosuna kaydedilir. Deleted tablosunun Inserted tablosundan farkı, asıl tablodan silinen kayıt artık Deleted tablosunda yer almaktadır.

Örnek tablo_kitap tablosunda Kitap_Id si 150 den büyük olan kitapların silinmesini engelleyecek bir DELETE tetikleyicisi yazdığınızı varsayınız. tablo_kitap tablosu üzerinde bir tetikleyici oluşturulmaktadır. Tablodaki toplam kayıt sayısının 0 dan büyük olması durumu göz önüne alınmaktadır. Bu halde, Kitap_Id si 150 ye eşit ve büyük id numaralarının silinmesi engellenecektir. Tetikleyiciyi Execute ettiğinizde tablo_kitap altında Sil adında bir tetikleyici oluşturulacaktır. Yeni bir sorgusayfası açıp tablodan kitap id si 150 den büyük olanları silmek istediğinizde uyarı mesajı ekrana gelecektir.

Uygulama : Birim Fiyatı 10 TL üstündeki urunlerin silinmesini engellemek için gerekli Tetikliciye ait T-SQL komutları aşağıdaki gibidir. CREATE TRIGGER URUN_SIL_ENGELLE ON URUN AFTER DELETE AS IF( SELECT COUNT(*) FROM deleted WHERE deleted.birimfiyati>10)>0 BEGIN PRINT 'BU ÜRÜNÜN BİRİM FİYATI YÜKSEKTİR' PRINT 'BU KAYIT SİLİNEMEZ' ROLLBACK TRANSACTION END 7 NUMARALI ÜRÜN SİLİNMEK İSTENDİĞİNDE Aşağıdaki uyarı pencersi çıkar ve kayıt silinmez

UPDATE Tetikleyicisi Tablo üzerindeki kayıt ya da kayıtlarda güncelleme olduğunda devreye girecek olan tetikleyicidir. INSERT ve DELETE tetikleyicilerden biraz farklıdır. Farkı ise UPDATE tetikleyici devreye girdiğinde Inserted sahte tablosu asıl tablodaki kayıtlardan, düzenlenmiş kayıtların kopyasını, Deleted sahte tablosu ise kayıtların düzenleme işleminden önceki hâllerini tutar. Örnek tablo_kitap tablosunda bulunan kitap fiyatlarından kaçının fiyatının değiştiğini bulacak bir UPDATE tetikleyici yazdığınızıvarsayınız. Bunun için tablo_kitap tablosuna kitap fiyatlarının tutulacağı Kitap_Fiyat adında ve int tipinde bir sütun oluşturarak sütun içerisine kitap fiyat bilgilerini giriniz. Buna göre UPDATE tetikleyicisini oluşturunuz. Bu tetikleyicide kullanılan RAISERROR fonksiyonu, SQL Server da hata meydana geldiğinde hatamesajı vermek için kullanılır. Burada ise sadece mesaj verme işlemi için kullanılmıştır. @@rowcount ise SQL Serverde en son yapılan işlemden kaç kaydın etkilendiğini verir. Bu tetikleyicinin otomatik olarak devreye girebilmesi için bu tetikleyiciyi ateşleyen bir SQL kodunun olması gerekir. Örnek olması açısından tablo_kitap tablosunda Kitap_Id numarası 250 den büyük kayıtların fiyatlarında 5 TL lik bir indirim yapılması istensin. Tetikleyiciyi ateşleyecek SQL kodları

Execute işleminden sonra Messages penceresinde sorgu sonucu kaç kaydın bu işlemden etkilendiği görüntülenecektir. Tabloyu Open Table komutuyla açtığınızda etkilenen satırın son satır olduğunu göreceksiniz. INSTEAD OF Tetikleyicisi INSTEAD OF tetikleyicisi, belirlenen işlem gerçekleşirken devreye girer ve kendi içinde tanımlanan komutları icra etmeye başlar. Yani, belirlenen işlemin yerine geçer. Bu tetikleyiciden önceki tetikleyiciler, veriler uygun değilse ROLLBACK ile işlemleri geri alırlar. INSTEAD OF, işlem gerçekleşirken verilerin uygunluğunu denetleyecektir. Örnek Uygulaması yapılacak olan bu tabloda, kayıtlı olan müşteri silinmeye çalışıldığı anda silme işleminin gerçekleştiği tarih ve saat otomatik olarak SilmeGirisimi adlı alana yazılacaktır. Musteriler adında bir tablo oluşturarak tabloda kullanılacak alanları T-SQL kodu ile tanımlayınız.

EXECUTE ederek tablonun oluşumunu tamamlayınız. Oluşturulan bu tabloda müşteri numaraları 1 den başlayarak otomatik olarak artacaktır. Oluşturulan tabloya kayıt girişini de yine T-SQL kodları ile gerçekleştiriniz. Sorguyu çalıştırarak kayıtların tabloya eklenmesini sağlayınız. Musteri_Silme adında bir tetikleyici oluşturarak bu tetikleyicinin tablodan kayıt silinmesinin başlaması durumunda sistem tarihve saatini SilmeGirisimi sütununa yazmasını ve sorguyu EXECUTE ederek tetikleyicinin oluşmasını sağlayınız. Musteriler tablosunda üçüncü ve beşinci kayıtları silecek yeni bir sorgu oluşturunuz ve çalıştırınız. 3 ve 5 numaralı kayıt silinmek istendiğinde tetikleyici devreye girecek ve SilmeGirisimi sütununa sistem tarih ve saatini yazacaktır. Uygulamanın sonuç penceresine bakarak yapılan işlemleri görebilirsiniz.

Uygulama: Calisan tablosuna SilmeGirisimi adlı tarih türünde bilgi tutan bir alan ekleyip kayıtlardan herhangi birisi silinmek istendiğinde tarih ve zaman bilgisini ilgili alana aktaran Tetikleyiciye ait T-SQL komutu aşağıdaki gibidir. ALTER TABLE Calisan ADD SilmeGirisimi Datetime Komutuyla SilmeGirisimi adlı alan Calisan tablosuna eklenir. CREATE TRIGGER CALISAN_SILME_GIRISIMI ON Calisan INSTEAD OF DELETE AS UPDATE Calisan SET SilmeGirisimi=GETDATE() WHERE IDCalisan IN( SELECT IDCalisan FROM deleted) Komutuyla ilgili tetikleyici oluşturulur ve herhangi kayıt silinmek istendiğinde sistemin tarihi SilinmeGirisimi alanına aktarılır.