Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Trigger Enable / Disable Yapmak
#1
Arkadaşlar Merhaba ; Ben tablo ya bir tane trigger ekledim ve bu trigger e programda parametrik kontrol etmek istiyorum. Parametreyi işaretlerse çalışacak kaldırırsa duracak. Bu konuda yardımcı olabilir misiniz?  Nasıl bir kod yapısı kurmalıyım?


Tablo    : TBLSTHAR
Trigger  : FIYAT_AKTAR_TRG
Cevapla
#2
Kastedilen parametre nasıl bir parametre. Program'a gönderilmiş parametreden mi bahsediyorsunuz? Bu hangi veritabanı? Trigger kodlarını if (sart) begin ... end arasında yazabilirsiniz, parametreniz her ne ise ona göre bir yere değer yazarsınız şartınızı da bu değere göre verirsiniz. Bu işin kaba taslağı bu şekilde olacaktır. Eğer çalışan .exe ler birbirinden farklı şekilde aktiflik pasiflik içerecekse ilgili veritabanına özel temp table (sql server için #table isimli) uygulamasına gidilebilir.
Cevapla
#3
Merhaba,
PostgreSQL veri tabanında bir trigger'ı pasif duruma almak için
ALTER TABLE SchemaAdi.TabloAdi DISABLE TRIGGER triggerAdi;
komut setini kullanabilirsiniz. Aktif duruma getirmek için ise yıkarıdaki komut dizindeki DISABLE yerine ENABLE direktifini kulanın. 
Bu komut dizilerini uygulama tarafında SQL olarak gönderip işlemlerinizi gerçekleştirebilirsiniz.
DelphiCan'dır!
Cevapla
#4
(01-01-2019, Saat: 10:36)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Merhaba,
PostgreSQL veri tabanında bir trigger'ı pasif duruma almak için
ALTER TABLE SchemaAdi.TabloAdi DISABLE TRIGGER triggerAdi;
komut setini kullanabilirsiniz. Aktif duruma getirmek için ise yıkarıdaki komut dizindeki DISABLE yerine ENABLE direktifini kulanın. 
Bu komut dizilerini uygulama tarafında SQL olarak gönderip işlemlerinizi gerçekleştirebilirsiniz.

Tşk. Ederim
Cevapla
#5
Bu işler için mssqlde context kullanilir pgde karşılığı var mı bakmak lazım. Veya ayarlar gibi bir tabloya boolean bir alan açılır. False ise trigger başında return yapilir.

https://postgres.cz/wiki/PostgreSQL_SQL_...variablesi
Bu işine yarar gibi
İmam Süleyman Yakub <--> Molla Mustafa Mansur
Evlatlarım!
Cismanımız TÜRK ruhumuz ise İSLAM.
Bu yolda daim olalım her an.
Cevapla
#6
(01-01-2019, Saat: 19:41)OZCANK Adlı Kullanıcıdan Alıntı:
(01-01-2019, Saat: 10:36)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Merhaba,
PostgreSQL veri tabanında bir trigger'ı pasif duruma almak için
ALTER TABLE SchemaAdi.TabloAdi DISABLE TRIGGER triggerAdi;
komut setini kullanabilirsiniz. Aktif duruma getirmek için ise yıkarıdaki komut dizindeki DISABLE yerine ENABLE direktifini kulanın. 
Bu komut dizilerini uygulama tarafında SQL olarak gönderip işlemlerinizi gerçekleştirebilirsiniz.

Tşk. Ederim

Arkadaşlar Kodu şöyle yaptım, Tabloda parametrelerde değişiyor programda mesagge ile bakıyorum doğru yerlere gidiyor ama işlem yapmıyor neden olabilir ?

if Form9.EMANETPRM.FieldByName('EPARAM_12').AsString='True' then
Begin
      Form9.DBCheckBox11.Checked:=True;
Kontrol.SQL.Text:='ALTER TABLE TBLSTHAR ENABLE TRIGGER [TRG_TBLFIYAT]';
End
Else
Begin
      Form9.DBCheckBox11.Checked:=False;
Kontrol.SQL.Text:='ALTER TABLE TBLSTHAR DISABLE TRIGGER [TRG_TBLFIYAT]';
End;
Cevapla
#7
(02-01-2019, Saat: 05:57)OZCANK Adlı Kullanıcıdan Alıntı:
(01-01-2019, Saat: 19:41)OZCANK Adlı Kullanıcıdan Alıntı: Tşk. Ederim

Arkadaşlar Kodu şöyle yaptım, Tabloda parametrelerde değişiyor programda mesagge ile bakıyorum doğru yerlere gidiyor ama işlem yapmıyor neden olabilir ?

if Form9.EMANETPRM.FieldByName('EPARAM_12').AsString='True' then
Begin
      Form9.DBCheckBox11.Checked:=True;
Kontrol.SQL.Text:='ALTER TABLE TBLSTHAR ENABLE TRIGGER [TRG_TBLFIYAT]';
End
Else
Begin
      Form9.DBCheckBox11.Checked:=False;
Kontrol.SQL.Text:='ALTER TABLE TBLSTHAR DISABLE TRIGGER [TRG_TBLFIYAT]';
End;

Uygulamadan DB objeleri üzerinde DDL işlemi yapmanın (bir trigger'ı enable/disable yapmak gibi) çok sağlıklı bir yöntem olduğunu düşünmüyorum. Diğer arkadaşların da yazdığı gibi bir parametre tablosuna parametrenizin değerini yazıp, trigger içersinde o parametrenin değerine göre işlem yapmak ya da yapmamak bir çok durumda daha sağlıklı olacaktır.
Cevapla
#8
(02-01-2019, Saat: 05:57)OZCANK Adlı Kullanıcıdan Alıntı: Arkadaşlar Kodu şöyle yaptım, Tabloda parametrelerde değişiyor programda mesagge ile bakıyorum doğru yerlere gidiyor ama işlem yapmıyor neden olabilir ?

if Form9.EMANETPRM.FieldByName('EPARAM_12').AsString='True' then
Begin
      Form9.DBCheckBox11.Checked:=True;
Kontrol.SQL.Text:='ALTER TABLE TBLSTHAR ENABLE TRIGGER [TRG_TBLFIYAT]';
End
Else
Begin
      Form9.DBCheckBox11.Checked:=False;
Kontrol.SQL.Text:='ALTER TABLE TBLSTHAR DISABLE TRIGGER [TRG_TBLFIYAT]';
End;

SQL kodunuzu bir DBA aracı ile test edin. Kod doğru çalışıyorsa sorun, uygulamanızdan kaynaklanıyor demektir.
Uygulama tarafında SQL script gönderirken bileşene ait Execute metodunu kullanın.
DelphiCan'dır!
Cevapla
#9
(02-01-2019, Saat: 05:57)OZCANK Adlı Kullanıcıdan Alıntı:
(01-01-2019, Saat: 19:41)OZCANK Adlı Kullanıcıdan Alıntı: Tşk. Ederim

Arkadaşlar Kodu şöyle yaptım, Tabloda parametrelerde değişiyor programda mesagge ile bakıyorum doğru yerlere gidiyor ama işlem yapmıyor neden olabilir ?

if Form9.EMANETPRM.FieldByName('EPARAM_12').AsString='True' then
Begin
      Form9.DBCheckBox11.Checked:=True;
Kontrol.SQL.Text:='ALTER TABLE TBLSTHAR ENABLE TRIGGER [TRG_TBLFIYAT]';
End
Else
Begin
      Form9.DBCheckBox11.Checked:=False;
Kontrol.SQL.Text:='ALTER TABLE TBLSTHAR DISABLE TRIGGER [TRG_TBLFIYAT]';
End;

Normalde SQL komutu çalışıyor.
Cevapla
#10
SQL'i Execute ile mi gönderiyorsunuz?
DelphiCan'dır!
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Enable Skia hk yhackup 1 560 25-01-2025, Saat: 10:32
Son Yorum: engerex
  7d sinema icin video oynatici yapmak hk. sadikacar60 3 811 19-11-2024, Saat: 21:38
Son Yorum: sadikacar60
  resimlerle ekran koruyucu yapmak sadikacar60 2 720 20-06-2024, Saat: 20:27
Son Yorum: sadikacar60
  çözüldü-screenshot yapmak hk. sadikacar60 16 8.845 19-06-2024, Saat: 16:12
Son Yorum: bydelphi
  Sqlite trigger Nedim 10 2.827 29-03-2024, Saat: 12:37
Son Yorum: RAD Coder



Konuyu Okuyanlar: 1 Ziyaretçi