Hoş Geldin, Mühendis!

Tüm mühendislerin ve mühendis adaylarının yer aldığı forum sayfamıza kayıt olmalısınız. Kayıt olduktan sonra tüm ders notlarına, teknik dokümanlara erişim sağlayabilecek, sorularınızı sorup cevaplar verebileceksiniz. Sitemiz tamamiyle ücretsiz olmakla birlikte Mühendis Puanı sistemi uygulamaktadır.

Bilgi paylaştıkça çoğalır.

Premium Abonelik 📢

Premium abonelik ile sitemizi reklamsız gezebilir, dosyaları sınırsızca indirebilirsiniz.

Daha Fazlası

[Muhendisiz.NET] Tekrar Sizlerleyiz! 🎭

Mühendisiz.NET sitesi forum ve blog sayfası olarak tekrar yayın hayatına başladı. 🤩 Sizlerde forum sayfamıza üye olabilir ve mühendis topluluğumuza katılabilirsiniz.

Daha Fazlası

Mühendis Puanı Sistemi🏆

Bilgi paylaştıkça çoğalır felsefesini benimsemiş olmamız nedeniyle Mühendis Puanı sistemini uygulamaya aldık. Dökümanları indirebilmek için bazı paylaşımlarda bulunmalısınız. 📨

Daha Fazlası
  • Dosya indirebilmek için 2 Mühendis Puanına ihtiyacınız var. Konuya yorum atarak 1 MP Not paylaşarak 6 MP kazanırsınız.
    Bilgi Paylaştıkça Çoğalır. (Mühendislik Puanı (MP) Nedir?)
  • Mühendis Puanı kazanmaya vakti olmayanlar için ücretli premium üyelik sistemi aktif edilmiştir.
    (Premium Üyelik SATIN AL)

MySQL Trigger Nedir? Kullanımı

turkmedia

Moderatör
Katılım
8 Ara 2022
Mesajlar
760
Mühendis Puanı
1,612

Trigger nedir?​

MySQL içerisinde kullanılan Trigger yani tetikleyiciler ın özel bir türüdür.

Tetikleyicileri saklı yordamlardan ayıran en önemli özellik saklı yordamları elle çalıştırmamız gerekirken, tetikleyiciler veriler üzerinde değişiklik yapıldığında kendiliğinden çalışmasıdır.

Tetikleyiciler çoğunlukla veri bütünlüğü ve güvenliğini sağlamak için kullanılır.

MySQL içerisindeki tetikleyiciler herhangi bir değer döndürmez.

MySQL Trigger oluşturma​

MySQL tetikleyicileri INSERT, UPDATE ve DELETE işlemlerinden önce (BEFORE) veya sonra (AFTER) çalıştırılır.

Tetikleyiciler CREATE TRIGGER anahtar kelimesi ile oluşturulur.

CREATE TRIGGER trigger_adi BEFORE/AFTER INSERT/UPDATE/DELETE
ON tablo_adi
FOR EACH ROW
BEGIN
-- MySQL ve SQL komutları
END;
INSERT ve UPDATE işleminde yeni veriye NEW anahtar kelimesi, UPDATE ve DELETE işleminde eski veriye OLD anahtar kelimesiyle erişilir.

Tetikleyicileri kullanarak urunler tablosuna bir ürün eklendiğinde islem tablosuna eklenen ürün ile ilgili bilgi kaydeden tetikleyiciyi oluşturalım.

DELIMITER //
CREATE TRIGGER bir_urun_eklendi BEFORE INSERT
ON urunler
FOR EACH ROW
BEGIN
INSERT INTO islem(islem_adi) VALUES(CONCAT(NEW.urun_adi, ' eklendi.'));
END//
DELIMITER ;
Tetikleyiciyi oluşturduktan sonra urunler tablosunda yeni bir kayıt eklendiğinde islem tablosuna eklenen ürün ile ilgili kayıt eklenecektir.

Yukarıdaki tetikleyici oluşturma yapısını kullanarak urunler tablosunda bir kaydın silinmesi ile silinen ürün adını islemler tablosuna kaydeden tetikleyiciyi oluşturalım.

DELIMITER //
CREATE TRIGGER bir_urun_silindi BEFORE DELETE
ON urunler
FOR EACH ROW
BEGIN
INSERT INTO islem(islem_adi) VALUES(CONCAT(OLD.urun_adi, ' silindi.'));
END//
DELIMITER ;
Eklenen ürünle ilgili bilgiye NEW silinen ürünle ilgili bilgiye OLD anahtar kelimesi ile ulaşıldığına dikkat edelim.

MySQL saklı yordamlar içerisinde kullanılan if, elseif, else, case when, while gibi ifadeleri de tetikleyici içerisinde kullanabiliriz.

Ancak gereğinden fazla tetikleyici kullanımı veri tabanı sunucusunu yoracaktır.

Hayırlı günler dilerim.
 

Son kaynaklar