使用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来阻止读取和修改的事务中的行?
答案 0 :(得分:3)
在提交事务之前,新创建的记录对其他连接是不可见的。其他连接无法修改它,因此无需锁定它。