473,508 Members | 2,361 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

Mutating table error

M
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.
Jul 19 '05 #1
4 7429

"M" <gr**********@yahoo.com> wrote in message
news:c7**************************@posting.google.c om...
| 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.
are you used to SQL Server where you have the pseudo-tables for accessing
rows affected by the DML?

in Oracle you reference the values going into the database with the :NEW
'record' and the original values with the :OLD 'record'

so the trigger is more like

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

simple, no?

your code, if it would work, would have updated every row in the table (no
where clause)

note:
[_] use a BEFORE trigger to set values before the DML is applied to the
database
[_] use 'INSERT or UPDATE' for a trigger that applies to both DML
[_] optionally use the INSERTING and UPDATING keywords (if inserting....)
for conditional logic in the same trigger

-- mcs

Jul 19 '05 #2
VC
Hello,

In

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

.... you are trying to update a table which is in the process of being
changed by the triggering statement and this causes the 'mutating' error.
For a discussion, see
http://asktom.oracle.com/pls/ask/f?p...9::NO::F4950_P
8_DISPLAYID,F4950_P8_CRITERIA:9579487119866,
In your case, it's unclear why you need a trigger at all since you can just
use the default of 'SYSDATE' on the column in question...

VC

"M" <gr**********@yahoo.com> wrote in message
news:c7**************************@posting.google.c om...
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.

Jul 19 '05 #3

"VC" <bo*******@hotmail.com> wrote in message
news:iUxYb.208484$U%5.1156019@attbi_s03...
| Hello,
|
| In
|
| create or replace trigger test_Trigger
| after update on mvkTest
| for each row
| begin update mvkTest
| set kogda = sysdate;
| end;
|
| ... you are trying to update a table which is in the process of being
| changed by the triggering statement and this causes the 'mutating' error.
| For a discussion, see
|
http://asktom.oracle.com/pls/ask/f?p...9::NO::F4950_P
| 8_DISPLAYID,F4950_P8_CRITERIA:9579487119866,
|
|
| In your case, it's unclear why you need a trigger at all since you can
just
| use the default of 'SYSDATE' on the column in question...
|
| VC
|

actually, there are two issues with using a default value instead of a
trigger

1) it can be overridden on INSERT (including with an explicit null)
2) it only works on INSERT, not on UPDATE

a trigger is the only way to guarantee that a value is set, outside of
limiting all access to an API (for which there are many valid arguments)

-- mcs
Jul 19 '05 #4
VC
Hello,
"Mark C. Stock" <mcstockX@Xenquery .com> wrote in message
news:Ue********************@comcast.com...

"VC" <bo*******@hotmail.com> wrote in message
news:iUxYb.208484$U%5.1156019@attbi_s03...
| Hello,
|
| In
|
| create or replace trigger test_Trigger
| after update on mvkTest
| for each row
| begin update mvkTest
| set kogda = sysdate;
| end;
|
| ... you are trying to update a table which is in the process of being
| changed by the triggering statement and this causes the 'mutating' error. | For a discussion, see
|
http://asktom.oracle.com/pls/ask/f?p...9::NO::F4950_P | 8_DISPLAYID,F4950_P8_CRITERIA:9579487119866,
|
|
| In your case, it's unclear why you need a trigger at all since you can
just
| use the default of 'SYSDATE' on the column in question...
|
| VC
|

actually, there are two issues with using a default value instead of a
trigger

1) it can be overridden on INSERT (including with an explicit null)
2) it only works on INSERT, not on UPDATE

Agree. I missed the update part ;)
a trigger is the only way to guarantee that a value is set, outside of
limiting all access to an API (for which there are many valid arguments)

-- mcs

Jul 19 '05 #5

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

2
4695
by: robert | last post by:
i've found the solution threads on changing a column on insert. works fine. question: - will one package serve for all such triggers, or does there need to be a package defined to support...
4
7036
by: M Mueller | last post by:
Hello - I'm using Oracle 8i and am running into the infamous mutating table error on an AFTER INSERT OR UPDATE FOR EACH ROW trigger. I have seen examples for getting around mutating table...
0
2131
by: hankr | last post by:
I have only a developer's level knowledge of Oracle, though I have access to DBA tools. Searches through the docs have not been fruitful, so I thought I'd try here. I am getting an error on a...
2
12194
by: Reshmi Jacob | last post by:
Hello, Can any one help me in creating a trigger to update system date into a table while inserting a record into that table. I tried it like this, it is showing error !!! The following error...
0
1536
by: AYAN MUKHERJEE | last post by:
I have 2 tables. 1) emp_test, 2) newemp_test. I had created a trigger to insert automatic data in the table no. 2 , as soon as a row of information is inserted in table no. 1. The Trigger had been...
3
3700
by: extremexpert | last post by:
Hai all, I have two tables like hdr and det. I would like to create the trigger for the situation ' 1.Delete Det table records, if any record is deleting in hdr table 2. Delte hdr table...
3
1768
by: dmanojbaba | last post by:
i have a table with values like 1,2,3.... (primary key) if i delete a row eg.4, i need my trigger to update the values 5 to 4,6 to 5, 7 to 6,.. like that, after deleting 4. pls help me... my...
4
271
by: M | last post by:
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,...
16
7005
by: vamsioracle | last post by:
Can Someone help me how to avoid mutating error while using triggers. I work on oracle apps. I created a vacation rule such that responsibility is delegated to other person. These details are...
0
7321
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
7377
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
0
7489
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...
0
5624
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...
1
5047
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new...
0
4705
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and...
0
1547
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated ...
1
762
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.
0
414
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.