1 / 26

Tetikleyici

Tetikleyici. Nedir?. Bir tablo üzerinde Ekleme silme ve güncellemeye bağlı olarak tetiklenip çalışan SQL kodlarıdır. Genel amacı veri bütünlüğünü korumaktır. Tetikleyiciler. MYSQL tek bir tablo üzerinde maksimum 6 adet tetikleyiciyi destekler: Before Insert After Insert

abbot-casey
Download Presentation

Tetikleyici

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Tetikleyici

  2. Nedir? • Bir tablo üzerinde • Ekleme • silme ve • güncellemeye bağlı olarak tetiklenip çalışan SQL kodlarıdır. • Genel amacı veri bütünlüğünü korumaktır.

  3. Tetikleyiciler • MYSQL tek bir tablo üzerinde maksimum 6 adet tetikleyiciyi destekler: • Before Insert • After Insert • Before Update • After Update • Before Delete • After Delete

  4. Tetikleyici Oluşturmak CREATE TRIGGER triggername [BEFORE|AFTER] [INSERT|UPDATE|DELETE] ON tablename FOR EACH ROW {statement}

  5. Örnek • Yeni bir çalışan kaydı girildiği anda son güncelleme alanını güncelleyen bir tetikleyici için: • Çalışanlar tablosu: CREATE TABLE calisanlar ( calisan_id int(11) NOT NULL, adi varchar(25) COLLATE utf8_turkish_ci DEFAULT NULL, soyadi varchar(25) COLLATE utf8_turkish_ci DEFAULT NULL, son_guncelleme datetime DEFAULT NULL, PRIMARY KEY (`calisan_id`) ) E

  6. Örnek • CREATE TRIGGER calisan_son_guncelleme BEFORE INSERT ON calisanlar FOR EACH ROW SET NEW.son_guncelleme = NOW();

  7. Örnek • Aynı isimde yeni bir tetikleyici oluşturulursa hata verir.

  8. Tetikleyici Alias

  9. Tetikleyiciyi kaldırmak • DROP TRIGGER calisan_son_guncelleme; • Hata verirse: • DROP TRIGGER IF EXISTS calisan_son_guncelleme;

  10. Çoklu SQL komutu • Eğer tetikleyici ile birden fazla SQl komutu çalıştırılacaksa BEGIN …………….. END bloğu kullanılır

  11. INSERT • Örneğin ankete her girilen soruyu ve sorunun oluşturulma tarih/saatini başka bir tabloya kaydeden bir tetikleyici oluşturmak için:

  12. INSERT CREATE TABLE anket_sorular ( Soruno int(10) primary key, Soru varchar(250) ); CREATE TABLE yenisoru ( Soru varchar(250), Tarihi datetime );

  13. INSERT DELIMITER | CREATE TRIGGER before_anket_soru_girisi BEFORE INSERT ON anket_sorular FOR EACH ROW BEGIN INSERT INTO yenisoru (soru, Tarihi) values (NEW.soru, NOW()); END

  14. INSERT INSERT INTO anket_sorular (Soruno, Soru) values (1, 'Türkiyenin başkenti neresidir?');

  15. UPDATE • Örneğin anketteki bir soru değiştirildiğinde eski soruyu başka bir tabloya kaydeden bir tetikleyici oluşturmak için:

  16. UPDATE CREATE TABLE eskisoru( Sorunoint(10), Soru varchar(250) );

  17. UPDATE DELIMITER | CREATE TRIGGER update_anket_soru_girisi BEFORE UPDATE ON anket_sorular FOR EACH ROW BEGIN INSERT INTO eskisoru (soruno, soru) values (OLD.soruno, OLD.soru); END

  18. UPDATE • UPDATE anket_sorular SET soru="Almanyanın başkenti neresidir?" where soruno=1;

  19. DELETE • Örneğin anketten silinen soruların sayısını başka bir tabloya kaydeden bir tetikleyici oluşturmak için:

  20. DELETE CREATE TABLE silinensorular( adet int(10) ); INSERT INTO silinensorular SET adet=0;

  21. DELETE DELIMITER | CREATE TRIGGER delete_anket_soru BEFORE DELETE ON anket_sorular FOR EACH ROW BEGIN UPDATE silinensorular SET adet=adet+1; END

  22. DELETE • DELETE FROM anket_sorular where soruno=1;

  23. Tetikleyiciyi değiştirme • Böyle bir eyleme MYsql izin vermez. • Bu nedenle tetikleyiciyi kaldırıp tekrar oluşturmanız gerekir.

  24. View- Tetikleyici • View’lar tetikleyicileri desteklemez

  25. Tetikleyicileri göstermek • Veritabanında bulunan tüm tetikliyicileri göstermek için: • SHOW triggers

  26. Tetikleyicilerin Saklandığı Konum • Xampp içindeki Mysql klasöründeki data klasörünün içindeki çalıştığınız veritabanı klasöründe depolanırlar. • TRN ve TRG uzantılıdır. • before_anket_soru_girisi.TRN-tetikleyici tanımı • anket_sorular.TRG--< ilişkili tablo

More Related