2016-12-06 79 views
1

使用此操作後:lock tables table_name READ ; mysql不允許我從其他表格讀取,說:table'other_table'沒有用LOCK TABLES鎖定,有人可以請解釋當您鎖定表格時讀取選項...在MySql中鎖定表格

+3

您可以從閱讀文檔開始。 –

+0

我做過了,但這對我沒有幫助,謝謝... – salifkeita

回答

0

MySQL Documentation - LOCK TABLES

READ [LOCAL]鎖:

持有鎖可以讀取表(但不寫)會議。

多個會話可以同時獲取表的READ鎖。

其他會話可以在不明確獲取READ鎖的情況下讀取表。

LOCAL修飾符允許其他會話執行不衝突的INSERT語句(併發插入),以便在鎖定期間執行。 (請參見第9.11.3節「併發插入」)。但是,如果要在持有鎖的同時使用服務器外部的進程操縱數據庫,則不能使用READ LOCAL。對於InnoDB表,READ LOCAL與READ相同。

從我的理解,讀鎖定會話鎖是說:「嘿!我會從這個(或這些)表(S)來讀取,併爲此ONLY這些桌會話但是,我不能寫信給它。「請務必記住,其他會話可以從相同的表中讀取,而不必使用來獲取READ鎖。

因此,要回答您的問題,您必須在聲明READ鎖定時指定要讀取的每個表格。在該會話中,您將無法讀取任何其他表格。確保您的用戶在完成會話後UNLOCK

+0

但是爲什麼用戶無法從其他表中讀取,而他只是鎖定了一張表? – salifkeita

+0

@salifkeita我更新了我的答案,以更好地解釋它。讓我知道你是否需要更多! –

+0

非常感謝你,最後一部分回答了我的問題。 – salifkeita