2011-06-09 47 views
3

我想鎖定特定的表,讀取表,但是當我問鎖READ MYSQL

mysql_query("LOCK TABLES unique_voucher READ"); 

到數據庫中它可以讓我只讀此表而不是其他表。

是否可以鎖定這個特定的表,並且不允許用戶在某個過程完成之前查詢這個表?

(這是因爲我拿着計數器,如果很多用戶同時他們可以得到模糊的數字連接,所以直到一個用戶願意同一次過程中,我要鎖定的讀數表)

+0

你有沒有發現如何做到這一點? – 2012-09-19 20:04:37

回答

0

如果您爲所有用戶共享相同的數據庫連接,則一種可能的解決方案是鎖定除您想要的那個之外的所有其他表。鎖定的表格將可用。

http://dev.mysql.com/doc/refman/5.0/en/lock-tables.html

「A需要的鎖必須獲得所有它在一個LOCK TABLES語句需要的鎖會議雖然由此獲得的持有鎖,會話只能訪問鎖定表 。例如,在以下語句序列中,嘗試訪問t2時發生錯誤,因爲它未鎖定在LOCK TABLES語句中:「

mysql> LOCK TABLES t1 READ; 
mysql> SELECT COUNT(*) FROM t1; 
+----------+ 
| COUNT(*) | 
+----------+ 
|  3 | 
+----------+ 
mysql> SELECT COUNT(*) FROM t2; 
ERROR 1100 (HY000): Table 't2' was not locked with LOCK TABLES 
+0

我無法鎖定任何其他表,因爲它們正在廣泛使用。我只想鎖定一個特定的表格 – WilfredMifsud 2011-06-09 13:19:12

+0

@MRR:你的意思是「廣泛的」? – 2011-06-09 13:42:50