SQL Trigger Nedir?
MySQL’te bir trigger, bir tablo veya güncelleme işlemi yapıldığında veya bir sorgu çalıştırıldığında çalıştırılacak bir SQL sorgusudur. Türkçe karşılığı olarak yazımızıca tetikleyici olarak devam edeceğiz. Tetikleyiciler, veritabanınızı otomatik olarak güncellemenize veya diğer işlemleri gerçekleştirmeye yarayan özel işlevlerdir.
Tetikleyiciler, veritabanında belirli bir tablo veya güncelleme işlemi yapıldığında veya bir sorgu çalıştırıldığında çalıştırılacak bir sorgudur. Örneğin, bir tetikleyici oluşturarak, bir tablonun satırı güncellendiğinde otomatik olarak başka bir tablonun satırını da güncelleyebilirsiniz. Tetikleyiciler, veritabanınızı otomatik olarak güncellemenize veya diğer işlemleri gerçekleştirmeye yarayan özel işlevlerdir.
Tetikleyiciler, veritabanındaki bir tablo veya güncelleme işlemi yapıldığında veya bir sorgu çalıştırıldığında çalıştırılacak bir sorgudur. Örneğin, bir tetikleyici oluşturarak, bir tablonun satırı güncellendiğinde otomatik olarak başka bir tablonun satırını da güncelleyebilirsiniz.
Tetikleyici tanımlamak için aşağıdaki gibi bir SQL sorgusu kullanılır:
CREATE TRIGGER trigger_name
BEFORE/AFTER INSERT/UPDATE/DELETE
ON table_name
FOR EACH ROW
BEGIN
-- trigger body
END;
Bu sorguda:
trigger_name
: Tetikleyicinin adıdır. Bu ad, veritabanındaki diğer nesnelerle aynı olmamalıdır.BEFORE/AFTER
: Tetikleyicinin işlemin gerçekleştirilmesinden önce veya sonra çalıştırılacağını belirtir.INSERT/UPDATE/DELETE
: Tetikleyicinin hangi işlem türünde çalışacağını belirtir. Bu, bir tablo üzerinde yapılan birINSERT
,UPDATE
veyaDELETE
işlemine göre tetiklenebilir.
table_name
: Tetikleyicinin hangi tablo üzerinde çalışacağını belirtir. Bu tablo, tetikleyicinin çalıştırılacağı işlem türüne göre değişebilir. Örneğin, birINSERT
tetikleyicisi oluşturmak istiyorsanız, tetikleyicinin çalıştırılacağı tabloINSERT
işlemi yapılacak tablo olmalıdır.FOR EACH ROW
: Tetikleyicinin her bir satır için çalıştırılacağını belirtir. Bu seçenek, tetikleyicinin yalnızca bir kez çalıştırılmasını veya her bir satır için çalıştırılmasını sağlar.BEGIN
: Tetikleyici cümlelerinin başlangıcını belirtir.END
: Tetikleyici cümlelerinin sonunu belirtir.
Tetikleyiciyi silmek için aşağıdaki gibi bir SQL sorgusu kullanılır:
DROP TRIGGER trigger_name;
Bu sorguda, trigger_name
tetikleyicinin adıdır ve silinecektir.
Dikkat edilmesi gereken bir nokta, tetikleyicilerin veritabanı sistem tablosuna kaydedildiğidir. Bu nedenle, veritabanınızı yedekleme veya geri yükleme işlemleri sırasında tetikleyiciler de dahil olmak üzere veritabanınızın tüm nesneleri yedeklenir ve geri yüklenir.