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?
comments
2 references
// Comments are closed.
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.
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 🙂