Mysql tetikler veya tetikler - Olayları ve anları tanımlama

İçindekiler
Bir tetikleyici oluşturan ifadedir
CREATE TRIGGER trigger_name olay zamanı HER SATIRDA tablo ON

An
SONRA veya ÖNCE olabilir, yani bir kayıt oluşturma, silme, seçme, arama, değiştirme vb. gibi bir sql olayının gerçekleşmesinden sonra veya önce olabilir.
Etkinlik
Herhangi bir sql işlemine olay diyoruz, INSERT, UPDATE veya DELETE olabilir. Tetikleyicilerden seçim yapılamaz (Seçin *'den…) bu işlem tetikleyicilerden değil, saklı yordamlardan gerçekleştirilir.
Tetikleyicileri veya tetikleyicileri yönetmek için genel ifadeler ve komutlar
Bir araba acentesinin satışında bir denetim için bir tetikleyici oluştururuz, bir operatör veya satıcı bir müşterinin verilerini her değiştirdiğinde, otomatik olarak bir audits_cliente tablosunda tarih ve saati, değişikliği kimin yaptığını ve hangisinin müşteri olduğunu belirteceğiz bu değiştirildi
 HER SATIR İÇİN istemcilerde GÜNCELLEMEDEN SONRA TETİKLEYİCİ client_audit_trigger OLUŞTURUN client_audit (istemci kimliği, değiştirilen_taraf, tarih) DEĞERLERİ (OLD.clientid, NEW.idoperator, NOW ()) 

Veritabanında bulunan tüm tetikleyicileri sorgulayın
Tetikleyicileri göster

Bu durumda, client denetimini oluşturduğumuz ve farklı sütunlarda işlevselliğini gördüğümüz, client tablosunda ekleme yapacak bir update olayı ve onun yönetici kullanıcısı root'tur.
Veritabanından bir tetikleyici silme
DROP TRIGGER tetikleyici adı

Bir tetikleyicide saklı yordamlar nasıl çağırılır
Bir ürün veritabanı için bir örnek analiz edeceğiz ve bir satış oluştururken bir satıcının kazandığı komisyonu da oluşturması gerektiğini, bu durumda satış başına komisyonun yeni satışı ekledikten veya oluşturduktan sonra güncellenmesi gerektiğini veya bir fatura oluşturduktan sonra da olabilir. , geliştirilecek iş modeline bağlı olarak, ancak örneğin anlaşılması için yeterlidir.
Satılan bir ürünün miktarına göre komisyonu hesaplayacak bir saklı yordam oluşturuyoruz.
 DELIMITER $$ CREATE PROSEDÜRÜ pa_commission` (p_vendor ID INT, IN p_product ID INT, IN miktar INT) BEGIN DECLARE totalcommission INT DEFAULT 0; productid = p_productid; totalcommission = komisyon * p_amount komisyon (satıcı, komisyon) değerlerine girin (sellerid, productid, komisyon, totalcommission); SON $$ DELIMITER $$ 

Şimdi yeni satış tetikleyicisini oluşturuyoruz. Bu tetikleyici, bir satış eklendikten ve bunun veya satış detayının verileri alındıktan sonra yürütülür.
 HER SATIR İÇİN SATIŞLARA EKLEDİKTEN SONRA yeni satış TETİKLEYİ OLUŞTUR pa_commissions (yeni.id satıcı, yeni.idürün, yeni.miktar); SON $$ 

Ürün verilerine, komisyona bakabilmek ve böylece komisyon tutarını otomatik olarak hesaplayabilmek için saklı prosedürün çağrıldığını görebiliriz.
Ayrıca, komisyonun ve satışın zaten mevcut olup olmadığını bilmeye izin vererek daha karmaşık hale getirebilir, ardından değiştirebilir ve tekrar eklemeyebiliriz.
Bunun için satış veya fatura numarasını da tanımalıyız, ardından satış ve satıcı numarasında ürünün zaten var olup olmadığına bakmalıyız, bu ürünün zaten var olduğunu ve devreye alındığı anlamına gelir, bu nedenle değiştireceğiz ve yeni bir satış olarak eklemeyeceğiz.
 select count (productid)> 0'a, satıcı kimliği = satıcı kimliği ve satış kimliği = satış kimliği olduğu komisyonlardan zaten var; zaten varsa, GÜNCELLEME komisyonları komisyonu = toplam komisyonu belirler, burada satıcı kimliği = satıcı kimliği ve satış kimliği = satış kimliği; başka komisyonlara (satıcı, komisyon) değerleri ekleyin (sellerid, productid, komisyon, totalcommission); eğer son; 
Bu Eğitimi beğendiniz ve yardım ettiniz mi?Yazara olumlu puan vermek için bu düğmeye basarak yazarı ödüllendirebilirsiniz.
wave wave wave wave wave