Avatar billede viperfx102 Nybegynder
20. april 2001 - 18:01 Der er 2 kommentarer og
1 løsning

Fejl i trigger

Ok jeg har nedenstående tabel og trigger når jeg laver i update på tabellen får jeg følgende fejl:

FEJL i linie 1:
ORA-04091: tabellen SYSTEM.SKATTEOPL2 muterer, trigger/funktion kan ikke læse den
ORA-06512: ved \"SYSTEM.GET_DATE\",  linje 6
ORA-04088: fejl under udførelse af triggeren \'SYSTEM.GET_DATE\'

Trigger:
create or replace trigger get_date
before insert or update of løn on skatteopl2
for each row
when (user != \'system\')
Begin
  if (:Old.løn != 0) then
    update skatteopl2 set status=\'i\' where løn=:new.løn;
    update skatteopl2 set dato=sysdate where løn=:new.løn;
  else
    update skatteopl2 set status=\'u\' where løn=:new.løn;
    update skatteopl2 set dato=sysdate where løn=:new.løn;
  end if;
end;

Tabel:
NAVN          LØN  FRADRAG  TRÆKPRO S DATO

Oda Hansen  32456      2000        45
Petrine Nielsen26476  2000        42
Hans Petersen30453,56  2000        46
Peter Hansen3245      2000        45
Svend Olsen 16476      2000        42
Jens Arnesen7453,56    1200        46
Avatar billede ehf Nybegynder
20. april 2001 - 20:15 #1
Når oracle kaster en mutating trigger exception er det for at undgå en uendelig løkke.

Så du skal undgå at lave en update i en update trigger. Prøv istedet følgende.

create or replace trigger get_date
before insert or update of løn on skatteopl2
for each row
when (user != \'system\')
Begin
  if (:Old.løn != 0) then
    :new.status:=\'i\';
:new. set dato=sysdate where løn=:new.løn;
  else
    update skatteopl2 set status=\'u\' where løn=:new.løn;
    update skatteopl2 set dato=sysdate where løn=:new.løn;
  end if;
end;
Avatar billede ehf Nybegynder
20. april 2001 - 20:17 #2
Ups jeg blev ikke helt færdig

create or replace trigger get_date
before insert or update of løn on skatteopl2
for each row
when (user != \'system\')
Begin
  if (:Old.løn != 0) then
    :new.status:=\'i\';
    :new.dato:=sysdate;
  else
    :new.status:=\'u\';
    :new.dato:=sysdate;
  end if;
end;
Avatar billede viperfx102 Nybegynder
20. april 2001 - 20:42 #3
Kanon godt, 1000 tak!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester