Merhabalar arkadaşlar, Sitemizi programlama ile ilgilenen bütün arkadaşlarımızın türkçe içerik konusunda çektiği sıkıntılar düşünülerek soru/cevap şeklinde bir etkileşimde bulunabilmesi için kurduk. Umuyoruz hepimiz için güzel bir deneyim olur. Hasscript Ekibi

Sorunuz mu var? Belki de çoktan soruldu..

0
Trigger içinden belli bir kaydı nasıl görmezden gelirim?

Açık 2 Cevaplar 17 Gösterim Veri Tabanı
Uygulamam üzerinde bir update kodu çalıştırmam gerekiyor.
Bu update kodu 5 milyon kaydı update edecek. Loglama için de bir trigger var. Bu kayıtları trigger da görmezden gelmek istiyorum.
Trigger'ı kapatırsam o arada gelebilecek bütün kayıtları görmezden gelecek. Bunun için nasıl bir yöntem bulunabilir?

2 Cevap

1

Aklıma şöyle birşey geliyor. Tablo üzerindeki log trigger'ında update edilecek kolon dışındaki tüm kolonlar girilerek ( Before INSERT OR UPDATE ON Column_name,Column_name2,...)  sadece güncellenecek kolon trigger dışında tutulabilir. Ancak bu çözüm update edilecek kolonda herhangi bir değişiklik esnasında loga yazmayacak. Kümeyi biraz daraltmış oluyoruz sadece.

18 Ağustos 2017 erkanerkisi (185 puan) cevapladı
0
Biz şöyle bir yol izledik.

Update edeceğimiz yerde dbms - session a hangi kaydı update edeceğimizi verdik.

for r in (select * from tablo)
loop
   dbms_session.set_identifier(r.pk);
   update tablo set
   ...
   where pk = r.pk;
end loop;

Trigger içinden de sessiondaki kaydı çektik ve o kayıt için update varsa görmezden gel dedik.

select sys_context('USERENV'
                    ,'CLIENT_IDENTIFIER')
    into id
    from dual;
  if id= :new.id
  then
    return;
  end if;

Güzel cevaplar geliyor :)
18 Ağustos 2017 kenan (2,833 puan) cevapladı
...