MySQL'de tetikleyiciler oluşturun ve silin

MySQL'de tetik programlama


Tetikleyiciler veya genel olarak çağrılan "tetikleyiciler" programlama Veritabanlarında bulunan bir tür nesnedir. Söz konusu veritabanında belirli bir olay veya işlem gerçekleştirildiğinde, tetikleyicimiz daha önce programladığımız bir eylemi otomatik olarak yürütür.

NS tetikleyiciler sırasıyla ekleme, silme veya güncelleme gibi INSERT, DELETE veya UPDATE işlemleri yapıldığında otomatik olarak etkinleştirilirler. Bu eylemlerden herhangi birini yürütürken, tetikleyicilerimiz önceden programlanmış oldukları bir talimat veya talimat bloğunu gerçekleştirir.

NS MySQL'de bir tetikleyicinin yapısı sonraki:

BÜYÜT

 [DEFINER = {kullanıcı | CURRENT_USER}]
Kodun bu kısmı, veritabanı yöneticisine, DML olayları ortaya çıktığında tetikleyicilerimizi çağırabilmek için hangi kullanıcının ayrıcalıklarına sahip olduğunu söyler. Varsayılan değer CURRENT_USER'dır.

Tetikleyicimizin adını seçmek için takip edilmesi gereken çok iyi bir kriter vardır: Önce tablonun adını, ardından DML işleminin baş harfini (Ekle için I, Sil için D veya Güncelleme için U) ve ardından yürütme anından itibaren başlangıç ​​(ya sonrası için A ya da öncesi için B).

 ÖNCE | DESPUES DE
Yalnızca tetikleyicimizin yürütüleceği anı, yani tetikleyicinin DML olayından önce (önce) veya sonra (sonra) tetiklenip tetiklenmediğini gösterir.
 EKLE | SİL | GÜNCELLEME
Tetikleyicimizi tetiklemek için kullanacağımız cümlenin ne olacağını, veri girmek için Ekle'yi, silmek için Sil'i veya değiştirmek için Güncelle'yi söyler.
 AÇIK tablo adı
Tetikleyicimizle ilişkili tabloyu gösterir.
 HER SIRA İÇİN
Sadece bize, daha önce ON'da tanımlanan tablomuzun her satırı için tetikleyicinin yürütüleceğini söyler.

NS son sql deyimi veya talimat bloğu, tetikleyicimizin harekete geçtiğinde yürüteceği cümle veya cümleler olacaktır.

Tetikleyici pratik örnek


Şimdi, ücretsiz koltuklar varken belirli bir rota için otobüs bileti satmak için bir tetikleyicinin nasıl programlanacağına dair pratik bir örnek göreceğiz.
Tetikleyicileri ve depolanmış süreçleri kabul eden herhangi bir yazılımı kullanabiliriz.

1 inci Bir veritabanı oluşturuyoruz:

üst üste 2. veritabanımızda iki tablo oluşturuyoruz. Bunlardan biri satılan biletlerin saklanacağı yerdir, diğeri ise verilen yolculuk için kaç biletin müsait olduğunu bilmemiz için oluşturulur.

Satılan bilet sayısına ilişkin bilgilerin yer alacağı tablo şu şekilde:

Ardından, her bir özel seyahat için mevcut bilet sayısıyla ilgili bilgileri kaydettiğimiz tabloyu oluşturuyoruz:

3. Şimdi tabloyu oluşturuyoruz farklı gezileri kaydetmek için:

4. Veritabanını ve tabloları oluşturduktan sonra tetikleyicinin SQL sorgusunu oluşturacağız, ancak bundan önce ne olduğunu bilmeliyiz. YENİ ve ESKİ tanımlayıcılar tetikleyicilerde.

Tetikleyicimizin tablonun bir veya daha fazla belirli sütunuyla ilişkili olması için yukarıda YENİ VE ESKİ belirtilen tanımlayıcıları kullanmamız gerekir.
ESKİMİŞ: sütunun eski değerini gösterir
YENİ: alabileceği yeni değer.
Örnek olarak: ESKİ.idtrip veya YENİ.idtrip.

İle INSERT ifadesi Sadece YENİ tanımlayıcıyı kullanabiliriz çünkü INSERT ile oluşturulan fonksiyon sütun veya sütunlara yeni değerler getirmektir.
eğer kullanırsak DELETE ifadesi bu durumda OLD tanımlayıcısını kullanmalıyız çünkü DELETE ile önceden var olan değerleri siliyoruz.
Öte yandan, kullanırsak GÜNCELLEME ifadesi ESKİ ve YENİ'yi kullanabiliriz çünkü eski veya yeni değerlere başvurabiliriz çünkü zaten var olan kayıtları başka değerler için değiştireceğiz.

Artık tanımlayıcıları anladığımıza göre, sql ifadesi şöyle görünecektir:

Eğer sql deyimini onu destekleyen bir programda çalıştırırsak, gerçekten de bunu görürdük. tetikleyici oluşturuldu.

Nasıl çalıştığını görmek için bir otobüs yolculuğu için bazı mantıksal değerler sunuyoruz, örneğin:

Burada 45 koltuk olduğunu 1 numaralı tanımlayıcı ile seyahate girdim.

Bundan sonra bir bilet satıyoruz, örneğin 14 numaralı koltuğa karşılık gelen bilet:

Bu sorguyu yaparken current_availability alanına gidersek 'update_availability' tetikleyicisi aktif edildiğinden beri 45'in 44'e değiştiğini göreceğiz.

NS tetikleyici kullanmanın avantajları farklı kullanım durumlarının programlanabilmesi ve veritabanının bütünlüğünün korunmasıdır, yani bize belirli eylemleri manuel olarak yapmaya gerek kalmadan otomatik olarak yürüten rutinler oluşturma seçeneği sunar. Her türlü bilginin doğrulanması veya veri tabanındaki bazı hareketlerin takibi için çok geçerli olacaktır.

Doğrulamalarda az önce bahsettiğim çok ilginç bir başka örnek, cümle kurmadan önce reşit olma yaşının belirlenmesidir, örneğin:

Tetikleyici oluşturma örneklerini gördükten sonra, tetikleyicinin bilgilerine nasıl erişeceğimizi bilmeliyiz. Bunun için şu cümleleri kullanacağız:

Veritabanımızdaki tetikleyicileri görmek için:

 TETİKLERİ GÖSTER
Öte yandan, o anda oluşturulmuş olan tetikleyicinin bilgilerini görmek istersek:
 GÖSTER TETİKLEYİ OLUŞTUR Student_BU_trigger
Son olarak, tetikleyicilerin nasıl oluşturulduğunu ve görüntülendiğini gördükten sonra, veritabanımızda bulunan bir tetikleyiciyi ortadan kaldırmak için kullanılan ifadenin ne olduğunu göreceğiz.
Bunu yapmak için tipik silme komutunu kullanmamız yeterlidir: düşürmek.
 DROP TRIGGER [IF_EXISTS] tetikleyici_adı

Bu Eğitimi beğendiniz ve yardım ettiniz mi?Yazara olumlu puan vermek için bu düğmeye basarak yazarı ödüllendirebilirsiniz.

Arkadaşlarınızla sayfasını paylaşan sitenin gelişimine yardımcı olacak

wave wave wave wave wave