Mikro'da trigger ile kayıt engelleme: danışman notları

"Şu alan boşsa kayıt girilmesin" isteği, Mikro danışmanlığında en sık aldığımız taleplerden biridir. Mikro Jump / Fly verisi SQL Server'da durduğu için teknik cevap da bellidir: ilgili tabloya bir tetikleyici (trigger) yazılır, kural bozulursa işlem geri alınır. Bir veritabanı yöneticisi bunu kısa sürede yazar. Bizim yıllar içinde gördüğümüz sorunlar ise yazıldıktan sonra başlar.
Sahada karşılaştığımız durumlar
- Kimse trigger'ı hatırlamıyor. Kuralı yazan kişi şirketten ayrılmış, belge yok. Kullanıcılar kaydın neden durduğunu bilmiyor; destek ekibi Mikro'yu suçluyor.
- Anlaşılmaz hata mesajı. Kullanıcı ekranda bir SQL hata numarası görüyor. Neyi düzeltmesi gerektiğini anlamadığı için kaydı farklı bir yoldan girmeye çalışıyor.
- Sürüm güncellemesi. Mikro güncellemesi bir kolonu ya da görünümü değiştirdiğinde trigger derlenmez hâle gelir. Kötü yazılmışsa o tabloya hiçbir kayıt girilemez; iş durur.
- Performans. Toplu aktarım ya da maliyetlendirme gibi çok satırlı işlemlerde satır satır çalışan bir trigger süreyi katlayabilir.
- İstisna yönetimi. "Muhasebe müdürü bu kuraldan muaf olsun" isteği geldiğinde kullanıcı adları SQL kodunun içine gömülür; her personel değişikliğinde kod değişir.
Trigger yazacaksanız
Trigger yöntemi yanlış değildir; ama bir yazılım gibi yönetilmelidir. Önerilerimiz:
- Kurallar tek bir yerde listelensin, ne yaptıkları ve kimin istediği yazılsın.
- Kullanıcı mesajı teknik değil, iş dilinde olsun: hangi alan, neden, ne yapmalı.
- Kuralın kendisi hata verirse (örneğin güncelleme sonrası) kayıt durmasın, hata günlüğe yazılsın.
- Çok satırlı işlemler için kural küme bazlı yazılsın, satır satır döngü kurulmasın.
- Her Mikro güncellemesinden sonra kurallar test ortamında çalıştırılsın.
Tek bir basit kural için bu düzen fazla gelebilir; iki üç kuralı olan ve bir veritabanı yöneticisi bulunan şirketlerde elle yazılmış trigger yeterli olabilir. Kural sayısı arttıkça, istisnalar çoğaldıkça ve kuralları iş birimleri istemeye başladıkça bakım yükü de büyür. Karar verirken yazma süresini değil, kuralın yıllar boyunca kimin sorumluluğunda kalacağını düşünmek gerekir.
Uygulamada
Bu bakım yükünü azaltmak için geliştirdiğimiz MJF Studio, kuralları arayüzden yönetilebilir hâle getiriyor ve kendi sunucunuzda çalışıyor. Trigger yaklaşımının teknik ayrıntılarını ve bakımında dikkat edilecekleri kapsamlı biçimde şu rehberde ele aldık: Mikro'da trigger ile kayıt engelleme rehberi.
Bu konuda bir sorunuz olursa bize yazabilirsiniz.