Merhaba herkese,
Yaklaşık 10 sene evvel trigger konusunu anlatmışım ve bu hafta bir soru gelmiş. Sorunun cevabı için bir yazı yazmak istedim.
Soru: Trigger yapısında after insert ile for insert arasındaki fark nedir?
Cevaba geçmeden önce eski konuyu okumayanlar için trigger ne olduğundan bahsedeyim.
“TRIGGER” yapısı, veritabanlarında belirli bir olay gerçekleştiğinde otomatik olarak çalışan bir dizi SQL ifadesini içeren bir veritabanı nesnesidir. Bu trigger’lar, genellikle veritabanında gerçekleşen belirli olayları (örneğin, bir tabloya veri eklenmesi, güncellenmesi veya silinmesi gibi) takip etmek ve bu olaylara yanıt olarak belirli işlemleri gerçekleştirmek için kullanılır.
Microsoft SQL Server (MSSQL) veritabanı yönetim sistemi,
AFTER INSERT
ve
FOR INSERT
gibi trigger türlerini destekler. Ancak, SQL Server’da
FOR INSERT
ifadesi yerine genellikle
AFTER INSERT
kullanılır. FOR INSERT ifadesi genellikle Sysbase’den kalma bir ifade türü olup genellikle MYSQL de kullanılır.
AFTER INSERT
ve
FOR INSERT
ifadeleri, trigger’ların hangi zamanlarda çalışacağını belirlemek için kullanılır.
- AFTER INSERT:
-
AFTER INSERT
trigger, yeni veriler bir tabloya eklendikten sonra çalışır. - Trigger, ekleme işlemi tamamlandıktan sonra yürütülür, bu nedenle trigger içinde yapılan işlemler, yeni veriler tabloya eklendikten sonra gerçekleşir.
-
- FOR INSERT:
-
FOR INSERT
ifadesi, trigger’ın sadece bir INSERT işlemi gerçekleştiğinde çalışacağını belirtir. - Yani, birden çok satırın eklendiği bir INSERT ifadesi çalıştırıldığında, trigger yalnızca bir kere tetiklenir.
-
Özetle;
AFTER INSERT
trigger, ekleme işlemi tamamlandıktan sonra çalışırken,
FOR INSERT
trigger, her bir INSERT işlemi için çalışır.
FOR INSERT
kullanımı, genellikle tek satır ekleme işlemleri üzerinde daha spesifik kontrol sağlamak amacıyla tercih edilebilir.