Trigger

Trigger

Tablo ve veri tabanı triggerları vardır
tablo triggerları insert update delete öncesinde veya sonrasında devreye giren mekanizma örneğin aralarında link bulunan iki VT’den birindeki x tablasuna insert edildiğinde aynı verinin y tablosuna da geçmesi isteniyorsa burada trigger kullanılabilir. (insert trigger -before insert after insert )
Bir tabloya mesai saatleri dışında değişiklik yapılması istenmiyorsa o tabloya mesai saatlerini kontrol eden bir trigger konulabilir.

statement level trigger ; insert statementı yapılıyorsa o statement için çalışan trigger. (bu saatte insert edemesin vb.)

row level trigger ; Tablodaki her satır için çalışır. Değiştirilen herseyin başka bir yerde de değiştirilmesi gerekiyorsa kullanılır. Etkilenen her satır için.

instead of trigger ; view üzerinden update etmek istenirse , iot ile bu view a update yapılmak istenirse git şurları güncelle
gibi istekler olursa kullanılır çok fazla bir kullanım alanı yoktur

örnek : mesai saatleri dışında employees tablosunda delete/update/insert yapılması istenmiyorsa

Disable etmek için

Row LEvel Triggers
for each row : tüm tablo için değil her satır için çalışıyor.
Örnekmaaş update edilirken ortalama maaşın altında olmasın.

satir bazin calistigi icin ortalama maaşı bulamıyor.

log tablosu

tablo olustur

squence olustur

trigger olustur

test edilir

new ve old kelimelerini yalnızca for each row için kullanabiliriz yani row level de kullanabiliriz. statement level de kullanamayız.

Auto increment bir alan isteniyorsa en iyi çözüm sequence + trigger dır. Kimin hangi tarihte insert ettiğini loglamak için.

tablo olustur

procedure olustur

trigger olustur

2. alternatif

not : begin end olursa call olmayacak

test edilir

yeni VT’ lerde long alanlar clob olarak tutuluyor. long (2GB tutar) karakter tutar en önemli fark clobla (4GB tutar)
long alan içinde text araması yapılamaz

örnek

Bu sorgu yazi2 için sonuç dönderir ama yazi1 de hata verir.

type… table
index by table diye tanımlanıyor. Binary integer veya PLS_integer , PLS daha hızlı oldugundan tercih ediliyor.