Selon Harald Fuchs <[EMAIL PROTECTED]>:

> In article <[EMAIL PROTECTED]>,
> Julien ALLANOS <[EMAIL PROTECTED]> writes:
>
> > Well, I've tried the following scenario:
>
> > 1/ User A: SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED;
> > 2/ User B: SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED;
> > 3/ User A: START TRANSACTION;
> > 4/ User B: START TRANSACTION;
> > 5/ User A: SELECT * FROM MyTable LIMIT = 1 ORDER BY pkey FOR UPDATE;
> > I got a one-row result.
> > 6/ User B: SELECT * FROM MyTable LIMIT = 1 ORDER BY pkey FOR UPDATE;
> > I got the same one-row result again!
>
> > B isn't blocked and gets the same result than A, though A hasn't
> > commited/rollbacked yet.
>
> That's probably because you changed the transaction isolation level.
> Just leave it at repeatable-read, and B will block.

well, i don't know what i did to make it fail but now, in repeatable-read or in
read-commited mode, B blocks.

>
> By the way, your SELECT syntax is wrong.  You need
>
>   SELECT * FROM MyTable ORDER BY pkey LIMIT 1 FOR UPDATE

yeah, mine was obviously wrong.

>
> > Furthermore, I don't want B to be blocked: I want B to get the
> > "next" result while A is processing data and deleting the current
> > row.
>
> I don't know any way how to get this.  That's why I proposed to do the
> data processing after the DELETE and COMMIT which means that B will
> get blocked only for a few microseconds or so.
>
Thanks for your advice, i'm going to set the thing up this way, and, eventually
re-INSERT (outside the transaction) the record if data processing returns with
errors.
-- 
Julien ALLANOS
Silicomp-AQL
************************************************************
The contents of this email and any attachments are
confidential. They are intended for the named recipient(s)
only.
If you have received this email in error please notify the
system manager or the sender immediately and do not disclose
the contents to anyone or make copies.

* email scanned for viruses, vandals and malicious content *
************************************************************

--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to