2011-11-10 52 views
4

我是一个新的MySQL用户。我创建了一个InnoDB数据库系统。如何锁定InnoDB表中的行?

在我的情况下,我需要锁定行,如果选择使用更新。但即使我已经做了很多搜索,但我不明白如何为所有用户锁定行,如果该行由一个用户加载的话。

我使用php来连接mySQL数据库。

你能帮我解决吗?

+0

为什么你需要在你的表锁行?你确定你没有陷入[XY问题](http://meta.stackexchange.com/q/66377/164291)? – 2011-11-10 13:13:42

回答

2
select col1, col2 from table1 where col3='test' for update 
+3

感谢兄弟你保存了我的项目,但是plz试图为他人详细说明+1从我身边 –

8

MySQL会自动为您执行行锁定。
应该不需要自己进行行锁定。

但是,如果你坚持这样做,你可以使用select ... for update
请参阅:http://dev.mysql.com/doc/refman/5.0/en/innodb-locking-reads.html

SELECT counter_field FROM child_codes FOR UPDATE; 
UPDATE child_codes SET counter_field = counter_field + 1; 
+1

这部分对我来说没问题。但是,如果mySQL需要更新的用户与用户锁定行相同,mySQL如何知道更新。谢谢 – Flex60460

+2

@ Flex60460,MySQL会跟踪连接。你不需要担心这一点。 – Johan

+0

@ Flex60460您是否确实要锁定跨越多个HTTP请求的行? – nos