Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> c.d.o.misc -> Re: How to avoid waiting for locks during delete
Hi,
unfortunate to say you missed my point. The index thing is interesting to know. But its not the issue here. Maybe its my fault because I was generalizing my sample statements. Consider this example and you will have to admit i get the same "waiting for release" behaviour even if i deploy your foreign key index:
Session 1:
select * from b where foreign_key_to_A = 177 for update nowait; update b set Name='New Name' where foreign_key_to_A = 177; //no commit, commit will follow 7 hours later because much more work to do int his transaction ! result: rows with foreign_key_to_A = 177 are now locked in B for the next 7 hours.
Session 2:
delete from a where key = 177;
//oops, this will wait for 7 hours until Session 1 is done! ... no "NOWAIT"
option. My application will just look as if it is hung.
Dont get me wrong: I am not complaining about the lock. The lock is fine ! I dont want session 2 to delete while session 1 is still at changing records! But I want a notification in session2 that there is this lock, a notification like i get when i use NOWAIT in a SELECT statement.
Okay ?
"Ryan Gaffuri" <rgaffuri_at_cox.net> schrieb im Newsbeitrag
news:1efdad5b.0308120809.7d82dcd7_at_posting.google.com...
> "André Hartmann" <andrehartmann_at_hotmail.com> wrote in message
news:<3f38ae0c$1_at_olaf.komtel.net>...
> > Hi,
> >
> > I tried it out: I indexed the foreign key columns in my child table.
But I
> > still get the same behavious: When session 1 deletes on B without
commit,
> > session to is stuck with delete on A for as long as session 1 doesnt
> > commit/rollback. The indexing of the foreign key colum(s) didnt change a
> > thing. :(
> >
> > Andre
> > .
> >
> Yes it did. The only rows being locked now are the ROWS being deleted.
> However, you are trying to delete from the WHOLE child table, so
> therefore you are being blocked by the delete of the ROWS in question
> locked when you delete the parent table.
>
>
>
>
>
>
>
>> > > > create table a (Id INT primary key, Name VARCHAR2(100));
> > "Ryan Gaffuri" <rgaffuri_at_cox.net> schrieb im Newsbeitrag
> > news:1efdad5b.0308110844.2ea4e918_at_posting.google.com...
> > > "André Hartmann" <andrehartmann_at_hotmail.com> wrote in message
> > news:<3f339d88$1_at_olaf.komtel.net>...
> > > > Hi everyone,
> > > >
> > > > I have a problem with waiting for release of locked rows during a
> > > > cascading delete. I am aware of the NOWAIT option but it is not
> > available to
> > > > a DELETE statement. Consider this to see my problem:
> > > >