Here's a link that explains it pretty well:
http://webmonkey.wired.com/webmonkey/02/11/index4a_page4.html?tw=backend
A couple of things to note in the article:
show variables ... to ensure INNODB is available
alter table ... to enable INNODB on a table
SELECT ... FOR UPDATE to avoid the problem you are trying to avoid.
I tested this by opening two MS-DOS command windows and running the mysql interactive tool in each. Try a few SQL commands alternating windows to ensure the locking works as expected (when the first window locks a table the second window should wait until the first does a COMMIT before it returns from a select:
WINDOW 1: START TRANSACTION;
WINDOW 1: select * from mytable FOR UPDATE;
<returns rows>
WINDOW 2: START TRANSACTION;
WINDOW 2: select * from mytable FOR UPDATE;
<doesn't return, it's blocked by WINDOW 1...>
WINDOW 1: update mytable set mycol=2 where id = 1;
WINDOW 1: COMMIT;
WINDOW 2: <displays rows with mycol=2>
I use MSSQL more than MySQL; it assumes you want the row locked unless you say otherwise. MySQL assumes no lock unless you SELECT ... FOR UPDATE.