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
0 oy
23 gösterim
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?
Veri Tabanı kategorisinde (3.1k puan) sordu

2 Cevap

+1 oy

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.

(207 puan) cevapladı
0 oy
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 :)
(3.1k puan) cevapladı

İlgili sorular

0 oy
1 cevap 14 gösterim
0 oy
1 cevap 45 gösterim
0 oy
2 cevap 59 gösterim
59 gösterim 7 Ocak 2016 Veri Tabanı kategorisinde asefat (115 puan) sordu
0 oy
2 cevap 62 gösterim
...