Ana içeriğe geç

Veritabanı Trigger'ı

Veritabanı Tetikleyicisi

İngilizcesi
Database Trigger
Okunuşu
deytıbeys trigır
Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/database-trigger

Kısaca

Veritabanı trigger'ı, bir tabloda ekleme, güncelleme ya da silme gibi seçilmiş bir olay gerçekleştiğinde otomatik çalışan, veritabanında saklanan koddur.

Veritabanı trigger'ı nedir?

Veritabanı trigger'ı, bir tabloya, bazen de bir view'a ya da tüm veritabanına bağlanan ve bir olaya karşılık otomatik olarak tetiklenen prosedürel kod parçasıdır. En yaygın olaylar INSERT, UPDATE ve DELETE'tir. Uygulamalar bir trigger'ı asla doğrudan çağırmaz; olay ne zaman gerçekleşirse, hangi program yol açarsa açsın veritabanı onu çalıştırır.

Bir trigger tanımlarken zamanlamasını ve ayrıntı düzeyini seçersiniz. BEFORE trigger'ı değişiklikten önce çalışır ve gelen satırı doğrulayabilir, değiştirebilir ya da reddedebilir; AFTER trigger'ı değişiklik yapıldıktan sonra çalışır ve çoğunlukla denetim kayıtları yazmak ya da özet tabloları güncellemek için kullanılır; INSTEAD OF trigger'ı, genellikle bir view üzerinde, işlemin yerini alır. Satır düzeyindeki trigger etkilenen her satır için bir kez çalışır ve eski ile yeni değerleri görebilir; ifade düzeyindeki trigger ise ifade başına bir kez çalışır. Trigger, onu tetikleyen ifadeyle aynı transaction içinde çalışır; bu yüzden trigger başarısız olursa tüm değişiklik geri alınır.

Trigger, hareket sensörlü bir lamba gibidir: kimse anahtarı çevirmez, olayın kendisi onu yakar. Tipik kullanımlar denetim kayıtları, updated_at zaman damgalarını güncel tutmak, basit kısıtların ifade edemediği kuralları uygulamak ve denormalize edilmiş sayaçları ya da arama sütunlarını senkron tutmaktır.

Trigger çoğu zaman stored procedure ile karıştırılır. Stored procedure yalnızca bir şey onu adıyla çağırdığında çalışır; trigger ise veri değiştiğinde örtük olarak çalışır ve birçok veritabanında trigger yalnızca bir fonksiyonu çağırır. Trigger'lar bir sistemi anlaşılmaz hale getirebilir; çünkü uygulama kodunda görünmeyen mantık çalışır ve trigger zincirleri yazmaları yavaşlatabilir. Birçok ekip iş kurallarını uygulamada tutar ve trigger'ları yalnızca denetim gibi basit, veritabanı düzeyindeki işler için kullanır.

Önemli noktalar

  • Trigger, bir tabloya veri eklendiğinde, güncellendiğinde veya silindiğinde otomatik çalışır.
  • BEFORE trigger'ları gelen veriyi kontrol edebilir ya da değiştirebilir; AFTER trigger'ları tamamlanmış değişikliklere tepki verir.
  • Satır düzeyindeki trigger'lar bir satırın hem eski hem yeni değerlerini okuyabilir.
  • Trigger'lar, onları tetikleyen değişiklikle aynı transaction içinde çalışır.
  • Gizli trigger mantığı geliştiricileri şaşırtabilir; bu yüzden trigger'ları küçük tutun ve belgeleyin.

Örnek

updated_at sütununu güncel tutmak (PostgreSQL sözdizimi)sql
CREATE FUNCTION set_updated_at() RETURNS trigger AS $$
BEGIN
  NEW.updated_at := now();  -- change the row before it is saved
  RETURN NEW;
END;
$$ LANGUAGE plpgsql;

CREATE TRIGGER orders_set_updated_at
BEFORE UPDATE ON orders
FOR EACH ROW
EXECUTE FUNCTION set_updated_at();

Sık sorulan sorular

Trigger ile stored procedure arasındaki fark nedir?

Stored procedure yalnızca bir uygulama ya da kullanıcı onu açıkça çağırdığında çalışır. Trigger ise bir tabloda belirli bir olay gerçekleştiğinde otomatik çalışır ve doğrudan çağrılamaz.

Veritabanı trigger'ları kötü bir uygulama mıdır?

Doğası gereği değil, ancak mantığı uygulama kodunu okuyanlardan gizlerler ve yazmaları yavaşlatabilirler. Denetim ya da zaman damgaları gibi küçük, veritabanı düzeyindeki görevler için iyi çalışırlar; karmaşık iş mantığını uygulamada test etmek ve sürdürmek genellikle daha kolaydır.

BEFORE ve AFTER trigger'ları arasındaki fark nedir?

BEFORE trigger'ı satır yazılmadan önce çalışır; bu yüzden veriyi değiştirebilir ya da reddedebilir. AFTER trigger'ı değişiklik uygulandıktan sonra çalışır; bu da değişikliğe tepki vermeye, örneğin bir denetim tablosuna yazmaya uygun kılar.

İlgili sayfalar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar