Delphi Can
Trigger Enable / Disable Yapmak - Baskı Önizleme

+- Delphi Can (https://www.delphican.com)
+-- Forum: Delphi (https://www.delphican.com/forumdisplay.php?fid=3)
+--- Forum: Genel Programlama (https://www.delphican.com/forumdisplay.php?fid=6)
+--- Konu Başlığı: Trigger Enable / Disable Yapmak (/showthread.php?tid=3093)

Sayfalar: 1 2


Trigger Enable / Disable Yapmak - OZCANK - 01-01-2019

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


Trigger Enable / Disable Yapmak.!!! - sabanakman - 01-01-2019

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.


Cvp: Trigger Enable / Disable Yapmak.!!! - Fesih ARSLAN - 01-01-2019

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.


Cvp: Trigger Enable / Disable Yapmak.!!! - OZCANK - 01-01-2019

(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


Trigger Enable / Disable Yapmak.!!! - ahmet_sinav - 01-01-2019

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_Tricks_II#Any_other_session_variablesi
Bu işine yarar gibi


Cvp: Trigger Enable / Disable Yapmak.!!! - OZCANK - 02-01-2019

(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;



Cvp: Trigger Enable / Disable Yapmak.!!! - edo - 02-01-2019

(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.


Cvp: Trigger Enable / Disable Yapmak.!!! - Fesih ARSLAN - 02-01-2019

(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.


Cvp: Trigger Enable / Disable Yapmak.!!! - OZCANK - 02-01-2019

(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.


Cvp: Trigger Enable / Disable Yapmak.!!! - Fesih ARSLAN - 02-01-2019

SQL'i Execute ile mi gönderiyorsunuz?