使用 InnoDB,MySQL 事务是否在调用 BEGIN
时锁定新创建的行,然后在调用 commit 时解锁它们?
例如:
$query = "INSERT INTO employee (ssn,name,phone)
values ('123-45-6789','Matt','1-800-555-1212')";
mysql_query("BEGIN");
$result = mysql_query($query);
mysql_query("COMMIT);
INSERT
语句是锁定该行直到 COMMIT
被调用,还是回滚以防止其他并发连接修改它?
如果不是,您是否可以通过调用 select FOR UPDATE 仅锁定事务中的一行,从而阻止读取和任何修改?
最佳答案
在提交事务之前,新创建的记录对其他连接是不可见的。其他连接无法修改,所以不需要加锁。
关于php - MySQL 事务是否锁定正在更新和/或选择的 InnoDB 中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21472075/