我很新來使用數據庫。我目前正在使用Google Cloud SQL並通過PHP PDO訪問數據庫。查詢時暫時鎖定MYSQL表?
我設法找到了一些示例代碼網站(http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers):
<?php
try {
$db->beginTransaction(); //<---- 1
$db->exec("SOME QUERY"); //<---- 2
$stmt = $db->prepare("SOME OTHER QUERY?");
$stmt->execute(array($value));
$stmt = $db->prepare("YET ANOTHER QUERY??");
$stmt->execute(array($value2, $value3));
$db->commit(); //<---- 3
} catch(PDOException $ex) {
//Something went wrong rollback!
$db->rollBack();
echo $ex->getMessage();
}
根據上面的代碼,如果我這樣做 '$ DB->的BeginTransaction();',是否會開始鎖定桌子?然後'$ db-> exec(「SOME QUERY」);'將是正常的。最後,'$ db-> commit();'會保存上面的所有內容並解鎖桌子?
如果一切運行正常,那麼我應該假設在第2行正在運行時,沒有其他呼叫可以完成(它們將排隊),並且其他呼叫只能在此處呼叫第3行時開始?我只想知道我對這個過程的理解(以及代碼的寫法)是否準確。
是的,一個事務將停止對exec語句中的表進行任何更改。你可以得到完整的詳細信息(還有更多的不僅僅是這個)[在mysql文檔](http://dev.mysql.com/doc/refman/5.0/en/sql-syntax-transactions.html )交易。 – Fluffeh 2014-11-22 22:20:02