Skip navigation links

MySQL Forums :: Transactions :: Problem: A SELECT ... FOR UPDATE statement locking all rows in a table


Advanced Search

Problem: A SELECT ... FOR UPDATE statement locking all rows in a table
Posted by: Miloš Rašić ()
Date: July 13, 2011 10:17AM

MySQL Server version 5.1.41 with InnoDB plugin enabled. I have the following three tables for invoices: invoices, invoice_components and invoice_expenses. Table invoices has invoice_id primary key. Both invoice_components and invoice_expenses are linked to table invoices with invoice_id as a non-unique foreign_key (each invoice can have more than one component and more than one expense). Both tables have a BTREE index for this foreign key.

I have the following transactions:

transaction 1:
START TRANSACTION;
SELECT * FROM invoices WHERE invoice_id = 18 FOR UPDATE;
SELECT * FROM invoice_components WHERE invoice = 18 FOR UPDATE;
SELECT * FROM invoice_expenses WHERE invoice = 18 FOR UPDATE;

EVerything works ok for the first transaction and the rows are selected and locked.

transaction 2:
START TRANSACTION;
SELECT * FROM invoices WHERE invoice_id = 19 FOR UPDATE;
SELECT * FROM invoices WHERE invoice = 19 FOR UPDATE;
SELECT * FROM invoice_expenses WHERE invoice = 19 FOR UPDATE;

The second transaction returns "ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction" for the third query.

The same happens when I try to SELECT ... FOR UPDATE other invoices and their components and expenses. It seems the first transaction has locked all the rows in invoice_expenses table. Any ideas why this is happening?

Options: ReplyQuote


Subject Views Written By Posted
Problem: A SELECT ... FOR UPDATE statement locking all rows in a table 2824 Miloš Rašić 07/13/2011 10:17AM
Re: Problem: A SELECT ... FOR UPDATE statement locking all rows in a table 1563 Rick James 07/15/2011 10:32PM
Re: Problem: A SELECT ... FOR UPDATE statement locking all rows in a table 979 Miloš Rašić 07/20/2011 04:00AM
Re: Problem: A SELECT ... FOR UPDATE statement locking all rows in a table 850 Rick James 07/20/2011 06:22PM
Re: Problem: A SELECT ... FOR UPDATE statement locking all rows in a table 1249 Jasper Scott 07/26/2011 01:44AM


Sorry, you can't reply to this topic. It has been closed.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.