【发布时间】:2011-11-10 09:11:18
【问题描述】:
我是 MySQL 新用户。我创建了一个 InnoDB 数据库系统。
在我的情况下,如果使用 select for update,我需要锁定行。但是,即使我进行了多次搜索,如果这一行由一个用户加载,我也不明白如何为所有用户锁定行。
我使用php连接mySQL数据库。
你能帮我解决这个问题吗?
【问题讨论】:
-
为什么需要锁定表中的行?你确定你没有落入The XY Problem?
我是 MySQL 新用户。我创建了一个 InnoDB 数据库系统。
在我的情况下,如果使用 select for update,我需要锁定行。但是,即使我进行了多次搜索,如果这一行由一个用户加载,我也不明白如何为所有用户锁定行。
我使用php连接mySQL数据库。
你能帮我解决这个问题吗?
【问题讨论】:
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;
【讨论】:
select col1, col2 from table1 where col3='test' for update
【讨论】: