AfterUpdate Trigger ında update sorunu

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
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

AfterUpdate Trigger ında update sorunu

Mesaj gönderen gkimirti »

tablodaki bir alaın degerine gore baska bir alanı null yapacagım
bu iside (after update or insert) triggerinda yapmak istiyorum.
orneklersem;

islem:3
alan1: 'islem3 icin atanan deger'

olması normal,islem 2 yada 1 yapılınca bu alan1 null yapılacak.
bunu triggerda

Kod: Tümünü seç

  update servis s set s.dahili_person_id=null
    where (s.islem_tip_id<>3) and (s.id=old.id);
ile gerceklemek istiyorum ama
Too many concurrent executions of the same request
diye bir hata veriyor.
simdi update triggerında bu kontrol islemini nasıl yapabilirim?
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2380
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Mesaj gönderen freeman35 »

Yanlış anlamadıysam aynı tablonun Fieldları bunlar. Trigerları afterpost beforepost eventlarına benzetebiliriz, sen update edilirken bir dögü içinede (where 1 den fazla kayıt döndürebilir) kendi kendini çalıştırıyorsun. dediğin gibi aynı table'ın field ları ise.

Kod: Tümünü seç

if (new.islem_tip_id<>3) and (new.id=old.id);
 (new.dahili_person_id = null; 
end;
kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

ewt abi haklısın bu sekilde olması lazım
biraz once denedim garib birsey oldu trigger tetikleniyor
denemek icin exeption ile test ettim
kosulu kaldırsamda(gerci kosulda da bi sorun yok exception ile test ettim) degisen bir sey yok o alan degeri null olmuyor.
yani soyle birsey denedim,direkt

new.dahili_person_id = null;

yazdım,olmadı

old.dahili_person_id = null;

denedim yine olmadı. triggerda yapılan degisikligin gerceklesmesi icin ekstra birsey mi yapamak lazım ki, boyle garib davranıyor. :evil:
ÜŞENME,ERTELEME,VAZGEÇME
sair
Kıdemli Üye
Mesajlar: 288
Kayıt: 16 Haz 2003 04:41
Konum: Kastamonu
İletişim:

Mesaj gönderen sair »

new.dahili_person_id = is null; değil miydi ? Ben mi yanlış hatırlıyom ?

Sevgiler..
Geçip gideriz bizde ağızsız,dilsiz ve sorgusuz
İstanbul gibi düşeriz iki kıtaya birden...
En aşağılık düş, en büyük sevdadan belki
Erkek ölümler; bir uzun iç çekişle büyür göğsümüz
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

hayır direk null atama yapılabiliyor. onda sorun yok
trigger after degil de before olacakmıs.
sorun bu sekilde cozuldu yani :lol:
ÜŞENME,ERTELEME,VAZGEÇME
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 »

Selam Gökmen,

Yaw bende okurkan şaşkın şaşkın bakıyordum :) Sonunda sen de yazmışsın. Bu arada belki biliyorsundur ama bilmeyen olabilir diye söylüyorum, FB v1.5 Universal Triggers desteğini veriyor bilgin olsun. Yani bir Trigger'ı hem Insert hem de Update için kullanacaksan Trigger tanımında bunu belirtip, tek bir triggerda işini halledebiliyorsun.

Kolay Gelsin.
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

ewt abi guzel bir ozellik hakkaten
bende gecen ogrendim ve hemen uyguladım
ÜŞENME,ERTELEME,VAZGEÇME
Cevapla