English 中文(简体)
problem with mutating tables
原标题:

I want to create trigger which will be fired after insert into some table, let`s say user. In this trigger I want to select some records from table user, besides this one I insert to table, but then I receive error about mutating table. Is it possible to get records from this table?

最佳回答

The autonomous transaction method is a workaround for this but doesn t address some other fundamental issues.

The major problem with this method is that when multiple modifications occur simultaneously to a table then the triggers that fire do not see the results of the other modifications. Therefore the results that you get from the trigger code can be incorrect.

For example, if you had a trigger on a table of "customer orders" that is intended to maintain a "customer total orders" column in the customer table, then two orders being placed at the same time cannot see each other. they each try to update the "customer total orders" with a total that excludes the other order.

For this and other reasons it is often considered bad practice to use triggers for business logic or to maintain other table data.

问题回答

To paraphrase Tom Kyke:

when I hit a mutating table error, I ve got a serious fatal flaw in my logic.

This is a quite complex problem. There are multiple solutions to it, but the best is to change your logic so that you don t run into such errors.

A possible solution can be found here. There are some more discussions about this on Ask Tom, search for them and read them. You ll gain some very valuable knowledge.





相关问题
Export tables from SQL Server to be imported to Oracle 10g

I m trying to export some tables from SQL Server 2005 and then create those tables and populate them in Oracle. I have about 10 tables, varying from 4 columns up to 25. I m not using any constraints/...

Connecting to Oracle 10g with ODBC from Excel VBA

The following code works. the connection opens fine but recordset.recordCount always returns -1 when there is data in the table. ANd If I try to call any methods/properties on recordset it crashes ...

How to make a one to one left outer join?

I was wondering, is there a way to make a kind of one to one left outer join: I need a join that matches say table A with table B, for each record on table A it must search for its pair on table B, ...

Insert if not exists Oracle

I need to be able to run an Oracle query which goes to insert a number of rows, but it also checks to see if a primary key exists and if it does, then it skips that insert. Something like: INSERT ALL ...

How can I store NULLs in NOT NULL field?

I just came across NULL values in NOT-NULL fields in our test database. How could they get there? I know that NOT-NULL constraints can be altered with NOVALIDATE clause, but that would change table s ...

Type reference scope

I m studying databases and am currently working on a object-relational DB project and I ve encountered a small problem with the number of possible constraints in an object table. I m using "Database ...

OracleParameter and DBNull.Value

we have a table in an Oracle Database which contains a column with the type Char(3 Byte). Now we use a parameterized sql to select some rows with a DBNull.Value and it doesn t work: OracleCommand ...

热门标签