-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi,
On Tue, 20 Nov 2001, Heikki Tuuri wrote: > When someone buys a particular type of good, I would like to lock those > rows from the table, but since the quantity will change, I don't even want > other users to see these rows until I'm finished. When I lock the entire > table, I can do this. When I use "for update", or "lock in share mode", > other threads cannot update, but they can still see these rows. > > Is there a way to lock ROWS, so they're not VISIBLE until the first thread > is done with them? I would like to be able to use other rows though from > other threads. > > ....... > > Perhaps you want to query the table with > > SELECT ... LOCK IN SHARE MODE ? Nope, doesn't do what I want. I'll try to draw a table, with some example data: THREAD A THREAD B 1. mysql> begin work; Query OK, 0 rows affected (0.00 sec) 2. mysql> begin work; Query OK, 0 rows affected (0.00 sec) 3. mysql> select * from teszt where id < 10 lock in share mode; +----+------+ | id | tmp | +----+------+ | 1 | 1408 | | 2 | 1409 | | 2 | 1407 | | 3 | 1404 | | 4 | 1403 | | 5 | 1402 | | 5 | 1409 | | 6 | 1401 | | 7 | 1400 | | 8 | 1399 | | 9 | 1397 | +----+------+ 11 rows in set (0.03 sec) 4. mysql> select * from teszt where id < 5 lock in share mode; +----+------+ | id | tmp | +----+------+ | 1 | 1408 | | 2 | 1409 | | 2 | 1407 | | 3 | 1404 | | 4 | 1403 | +----+------+ 5 rows in set (0.03 sec) This happens now. What I would like is #4 to wait, until thread A finishes (commits OR rolls back). "id" is a key, buy not a unique key, since there can be several rows of the same value there. If it were a unique key, my wish would come true. :) If, instead of "lock in share mode", I try "for update", then it works, but not how I'd like it. Then #4 will wait, but it will wait even if the query is "select * from teszt where id > 15 for update". So it's basically like locking the entire table, and I cannot work with other data. It WORKS this way, I was just trying to speed it up. If this particular case cannot be solved otherwise, I'm still happy, because I could get rid of 90% of the lock tables. That's still better than nothing. :) Except... see next mail, on a different topic. :) Thanks, Attila ........................................................................... In nature there are neither rewards nor punishments; there are consequences. -Robert Green Ingersoll, lawyer and orator (1833-1899) - --- Public key: http://civ.hu/attila.asc -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.6 (GNU/Linux) Comment: For info see http://www.gnupg.org iD8DBQE7+iboDeyfLhmXxQwRAuMEAJ9WDB2EgkxDqlZ8ZQEl+aBGtLlyZACeISaS oKldGkk/nJIRGkmyXdtDwC8= =swnC -----END PGP SIGNATURE----- --------------------------------------------------------------------- Before posting, please check: http://www.mysql.com/manual.php (the manual) http://lists.mysql.com/ (the list archive) To request this thread, e-mail <[EMAIL PROTECTED]> To unsubscribe, e-mail <[EMAIL PROTECTED]> Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php