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.

Slides:



Advertisements
Benzer bir sunumlar
Stored Procedure Öğr.Gör.Metin Akbulut.
Advertisements

COME 339 JAVA-SQL BAĞLANTISI
4 SQL- Yapısal Sorgulama Dili
Tablo oluşturma İlk olarak tabloları oluşturmamız gerekli..
SQL’e Giriş.
SQL de Değişken Tanımlama
SQL Komutlar 5 Sibel SOMYÜREK.
İndeksler Sibel SOMYÜREK.
EkoPC Bilişim Ltd. Eğitim Hizmetleri
Veri Tabanı Yönetim Sistemleri
Veritabanı Yönetim Sistemleri Hızlı ve Kısa Giriş
VERİ TABANI ve YÖNETİMİ
Veri Tabanı Yönetim Sistemleri
VeriTabanı Uygulama. Tabloları yaratmak için MySQL komutları.
BÖLÜM 6 SQL SERVER KOMUTLARI.
SQL (STRUCTURED QUERY LANGUAGE)
SQL ve JavaScript Akademik Bilişim 2003 Adana, Şubat 2003 Fırat Tiryaki.
Veri Bütünlüğü Sibel SOMYÜREK.
11 ekim 2011 VTYS –II Dersi. Kalıp İfadelerle Sorgu (Pattern) Eğer bir sözel verinin sadece belli kriterlere uyanlarını seçeceksek sütun_adı LIKE kalıp.
MYSQL 4. HAFTA. mySQL veri türleri INTTamsayı: 'den kadar değişen diziye "signed" (işaretli), 0'dan 'e kadar değişenine.
ÖRNEKLER. musteri Id adi soyadi mus_satis Id barkod adet Urunlar barkod urun_adi kodu fiyati Stok_hareket tarih barkod gelen giden.
SQL Dili ve MySQL Komutları
SQL de Değişken Tanımlama
PHP ve MYSQL.
Iletisim Icin : Blog : E - Mail :
VeriTabanı Uygulama.
Sibel SOMYÜREK SQL Görev. SQL – 14a Egitselyazilim veri tabanındaki içerik tablosuna yeni bir kayıt ekleyin,
SQL Komutları (2) Uzm. Murat YAZICI.
RAISE RECORD/CURSOR TRIGGER
Bilgisayar Mühendisliği Bölümü
Veritabanlarına ve SQL'e Giriş Devrim GÜNDÜZ Kivi Bilişim Teknolojileri -
Veri Tabanı Yönetim Sistemleri 2 Ders 5 PL/SQL'e Giriş
SQL’ e Giriş Uzm. Murat YAZICI.
Bölüm 4: İleri SQL.
SİSTEM VERİTABANLARI. Sistem veritabanlarını tanıma. Kendi Login’imizi oluşturma Neler İşleyeceğiz?
ADRESİNDEN ÖRNEK VERİ TABANLARINI İNDİRİNİZ
Yeni Veritabanı Oluşturma
Veri Tabanı Yönetimi Dersi 8. Laboratuvarı Arş. Gör. Pınar CİHAN.
S ORGU / DML / DDL KOMUTLARı İbrahim Onur Sığırcı.
Yapısal Sorgulama Dili SQL VTYS Giriş Hafta 5 Ders Notu.
İNTERNET PROGRAMLAMA -2. Veritabanı Nedir? Veritabanı, bilgilerin düzenli bir ş ekilde saklandı ğ ı yapılardır. De ğ i ş kenlerdeki bilgiler ve formlardan.
Altıncı hafta. Müfredat programı Ödev teslim edenler Mantıksal tasarım ödevini teslim edenler: Belediye Projesi Valilik Projesi Mekan Projesi Konaklama.
Veri Tabanı Yönetim Sistemleri 2 Ders 7 Paket ve Tetikleyiciler Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği Bölümü.
Veri Tabanı Yönetimi Dersi 1. Laboratuvarı Arş. Gör. Pınar CİHAN.
BÖLÜM 9 VERİ TABANI NESNELERİ.
Öğretim Görevlisi Alper Talha Karadeniz Veri Tabanı 2
Veri Tabanı Yönetimi Dersi 1. Laboratuvarı
Yapısal Sorgulama Dili SQL Hafta 6 Ders Notu
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
Veri Tabanı Yönetimi Dersi 8. Laboratuvarı
Transaction ve Örnekler
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
TETİKLEYİCİ ( Trigger)
TETİKLEYİCİLER ve HATA KONTROLÜ
14.DERS Örnekler, Sorular BUKET DOĞAN.
VERİ TABANI SQL (STRUCTURED QUERY LANGUAGE) SAVAŞ TUNÇER.
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
Öğretim Görevlisi Alper Talha Karadeniz Veri Tabanı 1
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
DML ile veri ekleme, silme ve değiştirme
Sorgu / dml / ddl komutları
RAISE RECORD/CURSOR TRIGGER
SQL (STRUCTURED QUERY LANGUAGE)
Stored Procedure Öğr.Gör.Metin Akbulut.
SQL Server - Triggers.
SQL Server - Stored Procedures
VERİTABANI YÖNETİM SİSTEMLERİ 6-SQL Server-4-DML
VERİTABANI YÖNETİM SİSTEMLERİ 6-SQL Server-3-DDL
Sunum transkripti:

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 Before Update After Update Before Delete After Delete

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

Ö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

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

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

Tetikleyici Alias BağlamNew.fieldOld. Field Before InsertTüm alanlarDesteklemez After InsertDesteklemezEkledikten sonra «eski» kayıt yoktur. Before UpdateTüm alanlarDesteklemez After UpdateDesteklemez«Eski» kayıtların hepsi yeni güncellenmiştir. Before DeleteSilmeden önce «yeni» kayıt yoktur Desteklemez After DeleteDesteklemezKayıtların «eski» değerleri silinmiştir

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

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

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

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

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

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

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

UPDATE CREATE TABLE eskisoru ( Soruno int(10), Soru varchar(250) );

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

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

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

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

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

DELETE DELETE FROM anket_sorular where soruno=1;

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

View- Tetikleyici View’lar tetikleyicileri desteklemez

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

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