fib+'da protectededit aktifse beforeupdate trggr sorunsalı

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
iqprog

fib+'da protectededit aktifse beforeupdate trggr sorunsalı

Mesaj gönderen iqprog »

bu özellik böyle
pFIBDataset.Options.ProtectedEdit := True;

trigger da böyle
CREATE TRIGGER KUMAS_BU0 FOR KUMAS
ACTIVE BEFORE UPDATE POSITION 0
AS
begin
new.kms_kayit_tarihi = old.kms_kayit_tarihi;
new.kms_kayit_saati = old.kms_kayit_saati;

new.kms_degisiklik_tarihi = current_date;
new.kms_degisiklik_saati = current_time;
end


sorun şu kaydı edit moduna geçirip bir fieldda değişiklik yapınca daha kayıttan çıkmadığın halde yani hala aynı satırda olmana rağmen trigger çalışıyor ve sebebi de ProtectedEdit'in aktif olması.

bulana kadar canım çıktı tabi.

var mı bilen çözümünü, bu arada protectededit yerine sqlin içine lock olayını eklemeyi deneyeceğim.
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Size de selam :!:

Sorununuz pek açıklayıcı bir biçimde anlatılmamış. Bence sorununuzu bir daha gözden geçirin ve nasıl anlatabileceğinizi daha açık yazmaya çalışın.

Günlerdir açtığınız başlığa yanıt dönmedi (bir de forum kurallarına uygun bir biçimde yazın) muhtemelen yanıtınızı o zaman alabilirsiniz.

Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Nedense açık açık belirtilmeyen ( :!: ) maksadı/yapılmak isteneni tahmin etmeye çalışayım :(

Anladığım kadarı ile kayıtı edit durumuna getirince daha kayıtı tamamlamadan belki de vazgeçme durumu bile olabilecekkken trigger in tetiklenmemesini istiyorsunuz. O zaman BEFORE yerine AFTER kullanın :idea:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
iqprog

Mesaj gönderen iqprog »

saolun sorunu çözdüm.

sorun şu ki fibplus'da protectedit true ise fibplus kaydı editlenmeden hemen önce devreye giriyor ve "update tablename set id=id where id=:id" şeklinde bir sql çalıştırıyor bu sql ile kayıt daha önce bir başkası tarafından kilitlenmemişse kilitleniyor , daha önce başkası tarafından kilitlenmişse siz de edit yapamıyorsunuz. olay bundan ibaret.

fakat fibplus'un bu çözümü "her problem bir önceki çözümün sonucunda doğmuştur" ilkesi gereği başka bir problem çıkarıyor ki o da benim sorduğum soru idi. şimdi bu vatandaş kendisi arkada bir updateli sql çalıştırdığı için fb'de ki beforeupdate ve afterupdate triggerları da siz kaydı değiştirmeye yeltendiğiniz anda çalışıyor doğal olarak, o triggerlara yazdığınız sql herneyse artık.

sorunu bulunca gerisini bir şekilde hallettim.

aslında bu fibplus kullanıp protectediti kullananlar için önemli bir bilgi bunu hiç gözardı etmeseler iyi olur.

şimdi bir başkası gelip de protectedit kullanma sqlin sonuna for update with lock gibi şeyleri ekle falan demesin konu çok uzar, biliyoz yani onları da.
Cevapla