dbTalk Databases Forums  

please help with Mutating Table

comp.database.oracle comp.database.oracle


Discuss please help with Mutating Table in the comp.database.oracle forum.



Reply
 
Thread Tools Display Modes
  #1  
Old   
M
 
Posts: n/a

Default please help with Mutating Table - 02-17-2004 , 07:28 PM






Hello,

I have a very simple table, and want to create a trigger that updates
the date column entry (with the current date), whenever a row gets
modified.
Is there a simple way of fixing this, or would I have to create 3
extra triggers, a package, etc., as described in most posts about
mutating table errors?
Could you please explain to me WHY this error happens here (I have not
been able to find a clear explanation of what causes them)?


create table mvkTest
(bukva char(5),
kogda date);

insert into mvkTest
values('aaa', sysdate);
insert into mvkTest
values('bbb', sysdate);

create or replace trigger test_Trigger
after update on mvkTest
for each row
begin update mvkTest
set kogda = sysdate;
end;
/

update mvkTest
set bukva = 'ccc'
where bukva = 'aaa';

=======>>>>>>

update mvkTest
*
ERROR at line 1:
ORA-04091: table DTI.MVKTEST is mutating, trigger/function may not see
it
ORA-06512: at "DTI.TEST_TRIGGER", line 1
ORA-04088: error during execution of trigger 'DTI.TEST_TRIGGER'



Thank you,
G.


P.S. Using Oracle 9i

Reply With Quote
  #2  
Old   
Vitali
 
Posts: n/a

Default Re: please help with Mutating Table - 02-19-2004 , 09:43 PM






Dear G.
Would care to try following

create or replace trigger test_Trigger_AFTER
after insert or update on mvkTest
for each row
begin update mvkTest set :new.kogda = sysdate;
end;


Quote:
Could you please explain to me WHY this error happens here (I have not
been able to find a clear explanation of what causes them)?
because you don't RFM



"M" <greenandkind (AT) yahoo (DOT) com> wrote

Quote:
Hello,

I have a very simple table, and want to create a trigger that updates
the date column entry (with the current date), whenever a row gets
modified.
Is there a simple way of fixing this, or would I have to create 3
extra triggers, a package, etc., as described in most posts about
mutating table errors?


create table mvkTest
(bukva char(5),
kogda date);

insert into mvkTest
values('aaa', sysdate);
insert into mvkTest
values('bbb', sysdate);

create or replace trigger test_Trigger
after update on mvkTest
for each row
begin update mvkTest
set kogda = sysdate;
end;
/

update mvkTest
set bukva = 'ccc'
where bukva = 'aaa';

=======

update mvkTest
*
ERROR at line 1:
ORA-04091: table DTI.MVKTEST is mutating, trigger/function may not see
it
ORA-06512: at "DTI.TEST_TRIGGER", line 1
ORA-04088: error during execution of trigger 'DTI.TEST_TRIGGER'



Thank you,
G.


P.S. Using Oracle 9i



Reply With Quote
  #3  
Old   
VS
 
Posts: n/a

Default Re: please help with Mutating Table - 02-20-2004 , 11:11 PM



Man, RFM yourself

G. you are trying to change data at the time of update. Therefore mutation

Try to use BEFORE not AFTER
It will be something

create or replace trigger test_Trigger
before insert or update on mvkTest
for each row
begin
:new.kogda := sysdate;
end;



"Vitali" <nospam (AT) spam (DOT) net> wrote

Quote:
Dear G.
Would care to try following

create or replace trigger test_Trigger_AFTER
after insert or update on mvkTest
for each row
begin update mvkTest set :new.kogda = sysdate;
end;


Could you please explain to me WHY this error happens here (I have not
been able to find a clear explanation of what causes them)?

because you don't RFM



"M" <greenandkind (AT) yahoo (DOT) com> wrote in message
news:c7b3da1b.0402171728.68df0d96 (AT) posting (DOT) google.com...
Hello,

I have a very simple table, and want to create a trigger that updates
the date column entry (with the current date), whenever a row gets
modified.
Is there a simple way of fixing this, or would I have to create 3
extra triggers, a package, etc., as described in most posts about
mutating table errors?


create table mvkTest
(bukva char(5),
kogda date);

insert into mvkTest
values('aaa', sysdate);
insert into mvkTest
values('bbb', sysdate);

create or replace trigger test_Trigger
after update on mvkTest
for each row
begin update mvkTest
set kogda = sysdate;
end;
/

update mvkTest
set bukva = 'ccc'
where bukva = 'aaa';

=======

update mvkTest
*
ERROR at line 1:
ORA-04091: table DTI.MVKTEST is mutating, trigger/function may not see
it
ORA-06512: at "DTI.TEST_TRIGGER", line 1
ORA-04088: error during execution of trigger 'DTI.TEST_TRIGGER'



Thank you,
G.


P.S. Using Oracle 9i





Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.3
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.