Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何锁定InnoDB表中的行?_Php_Mysql_Innodb - Fatal编程技术网

Php 如何锁定InnoDB表中的行?

Php 如何锁定InnoDB表中的行?,php,mysql,innodb,Php,Mysql,Innodb,我是MySQL的新用户。我创建了一个InnoDB数据库系统 在我的例子中,如果使用select for update,我需要锁定行。但即使我做了很多搜索,我也不知道如果这一行由一个用户加载,如何为所有用户锁定该行 我使用php连接mySQL数据库 您能帮我解决这个问题吗?MySQL将自动为您执行行锁定。 select col1, col2 from table1 where col3='test' for update 应该没有必要自己锁行 但是,如果您坚持这样做,您可以使用select。。。

我是MySQL的新用户。我创建了一个InnoDB数据库系统

在我的例子中,如果使用select for update,我需要锁定行。但即使我做了很多搜索,我也不知道如果这一行由一个用户加载,如何为所有用户锁定该行

我使用php连接mySQL数据库


您能帮我解决这个问题吗?

MySQL将自动为您执行行锁定。
select col1, col2 from table1 where col3='test' for update
应该没有必要自己锁行

但是,如果您坚持这样做,您可以使用
select。。。用于更新

见:


这部分对我来说没问题。但mySQL如何在更新时知道想要更新的用户是否与锁定行的用户相同。Thanks@Flex60460,MySQL跟踪连接。您不必担心这一点。@Flex60460您真的想锁定跨多个HTTP请求的行吗?但这需要在一个事务之间进行,否则我认为没有效果?强制锁定的主要目标是避免某些竞争条件,例如,当两个独立的连接读取一个值并对该值执行操作时,只有当它们将该值更改为其他值时,才会触发相同的结果。所以,连接2应该等待任何可能的连接,首先修改行col值,然后才读取它。基本上,如果另一个连接当前正在该行上工作,它应该等待。为什么需要锁定表中的行?你确定你没有陷入困境吗?谢谢你救了我的项目,但请试着从我这边为其他人详细说明+1
SELECT counter_field FROM child_codes FOR UPDATE;
UPDATE child_codes SET counter_field = counter_field + 1;