MySQL事务是否锁定InnoDB中正在更新和/或选择的行

时间:2014-01-31 03:46:57

标签: php mysql sql transactions

使用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来阻止读取和修改的事务中的行?

1 个答案:

答案 0 :(得分:3)

在提交事务之前,新创建的记录对其他连接是不可见的。其他连接无法修改它,因此无需锁定它。