|
Posted by Joe Weinstein on 02/05/06 00:35
John Rivers wrote:
> if you want to do that
> you need to ensure you obtain all the locks required for the whole
> transaction in the first statement
That is often impossible, eg. a tx that updates two
tables. The actual requirement is that all potentially
concurrent transactions should lock needed objects in
the same order, else deadlocking is a risk.
> for example:
>
> Session 1:
> BEGIN TRAN
> insert into joe with (tablockx) (c1,c2) values (1,2)
>
> Session 2:
> BEGIN TRAN
> insert into joe with (tablockx) (c1,c2) values (3,4)
>
> Session 1:
> select * from joe
>
> Session 2:
> select * from joe
>
> deadlocks only occur when developers don't understand locking
> and they can render a production system virtually unusable ...
Amen to that, but what I'm looking for is a description of
what two locks my original two transactions got in reverse
order.
thanks
Joe
Navigation:
[Reply to this message]
|