Select for update makes sure that no other process can change the data between you
selected it for update and then actually changed it and commit it.
If you do not use "select for update" then it is possible that some other process can
change the data in the mean time between you selected and actually changes it. In this
case you not see the result you actually intend to have.
Innodb will only lock whole table only if there is no where clause in the update
statement, which I sure you do not have. Innodb follows row level locking.
From: Andrés Tello [mailto:mr.criptos@stripped]
Sent: Thursday, April 04, 2013 9:08 AM
Subject: Update and lock question.
I'm doing some tests, but have a questions about locking.
In a innodb table, if you issue an select for update lock for a row, supposedly, it only
locks that row, but if you don't issue a select for update, and trow the update... does
it locks the hole table?
The update goes over an indexed field, or the effect of locking the hole table is due I'm
updating an indexed field?
This is because I'm running into dead locks, but I know there is no select for update to
the row being updated.