簡體   English   中英

MySQL事務是否鎖定InnoDB中正在更新和/或選擇的行

[英]Do MySQL transactions lock rows within InnoDB that are being updated and/or selected

使用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);

在調用COMMIT之前INSERT語句是否鎖定該行,還是回滾以防止其他並發連接修改它? 如果沒有,你是否只能通過調用select FOR UPDATE來鎖定一個阻止讀取和修改的事務中的行?

在提交事務之前,新創建的記錄對其他連接是不可見的。 其他連接無法修改它,因此無需鎖定它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM