我想鎖定特定的表,讀取表,但是當我問鎖READ MYSQL
mysql_query("LOCK TABLES unique_voucher READ");
到數據庫中它可以讓我只讀此表而不是其他表。
是否可以鎖定這個特定的表,並且不允許用戶在某個過程完成之前查詢這個表?
(這是因爲我拿着計數器,如果很多用戶同時他們可以得到模糊的數字連接,所以直到一個用戶願意同一次過程中,我要鎖定的讀數表)
我想鎖定特定的表,讀取表,但是當我問鎖READ MYSQL
mysql_query("LOCK TABLES unique_voucher READ");
到數據庫中它可以讓我只讀此表而不是其他表。
是否可以鎖定這個特定的表,並且不允許用戶在某個過程完成之前查詢這個表?
(這是因爲我拿着計數器,如果很多用戶同時他們可以得到模糊的數字連接,所以直到一個用戶願意同一次過程中,我要鎖定的讀數表)
如果您爲所有用戶共享相同的數據庫連接,則一種可能的解決方案是鎖定除您想要的那個之外的所有其他表。鎖定的表格將可用。
從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
我無法鎖定任何其他表,因爲它們正在廣泛使用。我只想鎖定一個特定的表格 – WilfredMifsud 2011-06-09 13:19:12
@MRR:你的意思是「廣泛的」? – 2011-06-09 13:42:50
你有沒有發現如何做到這一點? – 2012-09-19 20:04:37