İçindekiler
Gelişmiş Mysql - Tetik ProgramlamaTetikleyiciler, veritabanında bir işlem veya olay meydana geldiğinde bir eylemi yürüten veritabanı içindeki bir nesnedir.
Örneğin bir giriş bileti satıldığında, müsait bir koltukta indirim yaparız.
Genel kod
TETİK OLUŞTUR tetikleyici adı
{ÖNCE | DESPUES DE }
// Olaydan önce veya sonra yürütülecek
{EKLE | GÜNCELLEME | SİLMEK}
// tetikleyiciyi tetikleyen eylem veya olay
AÇIK tablo adı
// olayı etkileyen tablonun adı
HER SIRA İÇİN
yürütülecek sql deyimi
Stokta bulunan bir etkinlik veya ürün için bilet satışı örneğini oluşturuyoruz. Bunu test etmek için phpmyadminn'i veya saklı yordamları ve tetikleyicileri destekleyen herhangi bir yazılımı kullanabilirsiniz.
Veritabanını oluşturuyoruz
VERİTABANI OLUŞTUR 'satış'
2 tablo oluşturuyoruz
Satılan biletlerin saklanacağı masa
CREATE TABLE `biletler` (
'id' int (10) NULL DEĞİL AUTO_INCREMENT,
'idevent' int (11) NULL DEĞİL,
`nroticket` int (11) NULL DEĞİL,
BİRİNCİL ANAHTAR (`id`)
) MOTOR = MyISAM VARSAYILAN CHARSET = latin1 AUTO_INCREMENT = 1;
Belirli bir etkinlik için biletlerin kullanılabilirliğini depolamak için tablo
'stok' YOKSA TABLO OLUŞTUR (
'idevent' int (10) NULL DEĞİL,
"stok gerçek" int (10) NULL DEĞİL
) MOTOR = MyISAM VARSAYILAN CHARSET = latin1;
CREATE TABLE `olaylar` (
'idevent' int (10) NULL DEĞİL AUTO_INCREMENT,
'event' int (11) varchar (200),
'tarih' tarih NULL DEĞİL,
BİRİNCİL ANAHTAR (`idevent`)
) MOTOR = MyISAM VARSAYILAN CHARSET = latin1 AUTO_INCREMENT = 1;
Tetikleyiciyi bir sql sorgusu olarak oluşturuyoruz, bu durumda ücretsiz HEIDISQL yazılımı olan NEW deyimi.column_name kullanıyoruz.
a, bu olay durumunda uygulamada tetikleme işleminin hangi alanını kullanacağımızı belirtir, eğer daha fazla varsa, onları her zaman önünde YENİ ile kullanırım,
Biletleri EKLEDİKTEN SONRA 'update_stock' TETİKLEYİCİ OLUŞTURUN'
HER BİRİ İÇİN
SIRA
GÜNCELLEME stok SET stok gerçek = stok gerçek -1 NEREDE idevent = YENİ.idevent
SQL ifadesini çalıştırıyoruz ve tetikleyicinin gerçekten oluşturulduğunu görüyoruz:
Örnek olarak, bir etkinlik için mevcut olan 500 biletin tablo stoğuna ekliyoruz, burada, masa biletlerine bir ekleme meydana gelirse yürütülmek üzere oluşturduğumuz için tetikleyiciden yanıt gelmeyecektir.
'satışlar' 'stok' ('sabit', 'cari stok') DEĞERLERİNE ('1', '500') EKLE;
Şimdi tetikleyicilerin büyüsünü deneyelim
Olay 1 için 100 numaralı bilet sattığımızı ve satışı bilet veritabanına eklediğimizi varsayalım.
INSERT INTO biletler (idevent, nroticket) DEĞERLER ('1', '100');
Stok tablosunda neler olduğunu gözlemleyelim ve bu etkinlik için stokta artık 499 biletin mevcut olduğunu göreceğiz, çünkü tablodaki ek bilet tigger'ı vurur ve çalıştırırım güncelleme_stok.
Bu metodolojinin kullanılması, hem kullanıcıya hem de programcıya, bir eylemin başka biri tarafından tetiklenirse yürütüleceğini bilerek yürütmenin şeffaflığına izin verir ve böylece satış durumunda bir hisse senedini güncellemek gibi rutin görevlerden kaçınır. binlerce ürünle pazarda, birkaç satır kodla büyük bir sorunu nasıl çözdüğümüzü görüyoruz.
Başka bir örnek, bir ürünü depodan çıkarmak ve stoğu kaldırmak olabilir.
'Ürünleri SİLMEDEN SONRA 'Alt_ürünler' TETİKLEYİCİ OLUŞTURUN'
HER BİRİ İÇİN
Ürün kimliği = YENİ.ürün kimliği NEREDE stoktan sil
SIRA
Olasılıklar sonsuzdur ve daha karmaşık durumların derinliklerine inebilirsiniz, tetikleyiciler saklı yordamlar için harika bir tamamlayıcıdırBu Eğitimi beğendiniz ve yardım ettiniz mi?Yazara olumlu puan vermek için bu düğmeye basarak yazarı ödüllendirebilirsiniz.