2013-02-06 30 views
2

使用INNODB,您可以添加到您的查詢LOCK IN SHARE MODE;,以便其他用戶仍可以讀取,但無法更新,直到正在編輯的用戶完成。分享模式下的INNODB和mysql PDO驅動程序鎖定

在PHP我目前的PDO功能目前看起來像:

//$this->db is a PDO connection to the MYSQL innodb database. 
try 
    { 
    $this->db->beginTransaction(); 
    $tmp = $this->db->prepare($query); 

    $tmp->execute($arr); 
    $this->last_id = $this->db->lastInsertId(); 
    $this->db->commit(); 
    return $this->last_id; 
    } 
catch(PDOException $ex) 
    { 
    $this->db->rollBack(); 
    return $ex->getMessage(); 
    } 

是否有PDO驅動程序功能設置,將其設置成共享模式?如果是的話如何?我發現的唯一的東西沒有答案,文件也不是很清楚。 或者我應該只是將它添加到查詢字符串?

回答

4

你必須創建查詢馬赫MySQL的語法,這一切,例如:

SELECT * FROM parent WHERE NAME = 'Jones' LOCK IN SHARE MODE 

的SHARE模式鎖定只是追加到查詢字符串。

+0

那麼,這不會妨礙PDO連接的事務功能?在提交後鎖定會被釋放嗎?或者我需要通過查詢來釋放它? – Tschallacka

+1

是的,交易功能將起作用,鎖定將在交易結束後被釋放。 –

+0

謝謝!你是一個很好的幫助! – Tschallacka