Aşağıda gösterilen bir karşılaştırma çizelgesi yardımıyla Tetikleyici ve Prosedür arasındaki bazı farklılıkları tartışalım.
Karşılaştırma Tablosu
Karşılaştırma için temel | tetikleyiciler | prosedürler |
---|---|---|
Temel | Belirtilen olayın oluşumunda otomatik olarak yürütülürler. | Gerektiğinde çalıştırılabilirler. |
çağrı | Tetikleyiciler prosedür içinde çağrılamaz. | Ancak, bir tetikleyici içindeki bir prosedürü çağırabilirsiniz. |
Parametre | Parametreleri tetikleyicilere geçiremiyoruz. | Parametreleri prosedürlere iletebiliriz. |
Dönüş | Tetik, yürütme sırasında hiçbir zaman değer döndürmez. | İşlem yürütme sırasında değer / değerler verebilir. |
Trigger'un tanımı
Tetik, belirtilen bir olayın meydana gelmesi durumunda otomatik olarak gerçekleştirilen bir prosedür gibidir. Prosedür gibi, tetikleyicinin de açıkça çağrılması gerekmez. Tetikleyiciler, belirli bir olayın oluşumuna cevaben bir görevi yerine getirmek için oluşturulur.
Tetikleyici, DDL deyimlerine (DELETE, INSERT veya UPDATE) veya DML deyimlerine (DELETE, INSERT veya UPDATE) veya bazı veritabanı işlemlerine (SERVERERROR, LOGON, LOGOFF, STARTUP veya SHUTDOWN) yanıt olarak çağrılabilir.
Tetik, aşağıda tartışıldığı gibi üç bileşenden oluşur:
- Olay : Olay, tetikleyicinin yürütülmesine neden olacak bir olayın meydana gelmesidir. Bir olay meydana gelmeden ÖNCE ya da olayın yürütülmesinden SONRA yürütülmesi istenebilir tetikleyici sipariş edilebilir.
- Koşul : Tetikleyicinin isteğe bağlı bir parçasıdır. Belirtilmediyse, belirtilen olay gerçekleştiğinde tetikleyici yürütülür. Koşul belirtilirse, tetikleyicinin çalıştırılıp çalıştırılmayacağını belirlemek için kuralları kontrol eder.
- Eylem : Eylem, Tetikleyicinin yürütülmesinde yürütülecek olan bir SQL ifadeleridir.
Bir olayın yaratılmasının genel şekli aşağıda tartışılmaktadır:
DURUM İŞLEMİNDEN ÖNCE / SONRA AÇIYOR.
Burada Koşul isteğe bağlıdır.
Prosedürlerin Tanımı
Prosedür, bir görevi gerçekleştirmek için oluşturulan bir program birimi olarak alınabilir ve veritabanında saklanır. Gerektiğinde SQL ifadesi tarafından çağrılırlar. Prosedürler, geliştiriciler tarafından tanımlanan kullanıcı tanımlı fonksiyonlar gibidir. CALL veya EXECUTE kullanılarak işlemler başlatılabilir.
Prosedürler aşağıdaki durumlarda yararlıdır:
- Prosedür başka bir uygulama tarafından isteniyorsa, herhangi bir uygulama tarafından başlatılabilmesi için sunucuda saklanabilir. Prosedürün bir veritabanından diğerine çoğaltma eforunu azaltır ve ayrıca yazılımın modülerliğini geliştirir.
- Prosedür sunucuda yürütüldüğü için veri transferini azaltır ve ayrıca iletişim maliyetini düşürür.
- Prosedürler, tetikleyici gücünün ötesindeki karmaşık kısıtlamaları kontrol etmek için kullanılabilir.
Bir prosedür oluşturmanın genel şeklini tartışalım:
PROSEDÜR OLUŞTURMA () İADE;
Burada, parametreler ve yerel bildirimler isteğe bağlıdır. Sadece gerektiğinde bahsedilir. Aşağıdaki açıklama prosedürlerin çağrılmasını açıklamaktadır.
TELEFON ETMEK () ;
Tetikleme ve İşlem Arasındaki Temel Farklılıklar
- Tetikleyici ve prosedür arasındaki temel fark, bir tetikleyicinin bir olay gerçekleştiğinde otomatik olarak çağrılan bir ifade olmasıdır. Öte yandan, gerektiğinde prosedür başlatılır.
- Bir tetikleyici içindeki prosedürü tanımlayabilirsiniz. Ancak, herhangi bir olayın gerçekleşmesi durumunda otomatik olarak tetikleyici başlatılması gerektiğinden, yordamın içinde hiçbir tetikleyici tanımlanmaz.
- Parametreleri prosedürlere iletebiliriz, ancak bizim tarafımızdan başlatılmadığı için tetiklemek için parametreleri geçemiyoruz.
- Bir prosedür parametre değerlerini veya kodunu döndürebilir, ancak bir tetikleyici olamaz.
Sonuç:
Tetikleyiciler kullanışlıdır, ancak veri karmaşıklığını arttırdığından alternatifleri varsa önlenirler. Bazen tetikleyiciler de uygun bir prosedürle ikame edilir.