रीड MYSQL - php, mysql पढ़ने के लिए एक टेबल लॉक करें

मैं पढ़ने के लिए एक विशेष टेबल लॉक करना चाहता हूं लेकिन जब मैंने पूछताछ की

   mysql_query("LOCK TABLES unique_voucher READ");

डेटाबेस में यह मुझे केवल इस तालिका को पढ़ने की अनुमति देता है लेकिन अन्य टेबल नहीं।

क्या यह केवल विशेष तालिका को लॉक करना संभव है और कुछ प्रक्रिया समाप्त होने तक उपयोगकर्ताओं को इस तालिका से पूछने की अनुमति नहीं है?

(ऐसा इसलिए है क्योंकि मैं एक काउंटर धारण कर रहा हूं और यदि बहुत से उपयोगकर्ता एक बार कनेक्ट होते हैं तो वे संदिग्ध संख्या प्राप्त कर सकते हैं, इसलिए जब तक कोई उपयोगकर्ता एक बार प्रक्रिया के साथ तैयार न हो, मैं एक टेबल के लिए पढ़ने को लॉक करना चाहता हूं)

उत्तर:

जवाब के लिए 0 № 1

यदि आप सभी उपयोगकर्ताओं के लिए एक ही डीबी कनेक्शन साझा करते हैं, तो एक संभावित समाधान सभी अन्य तालिकाओं को लॉक करना है, जो आप चाहते हैं उसे छोड़कर। लॉक टेबल उपलब्ध होंगे।

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

"एक सत्र जिसके लिए ताले की आवश्यकता होती है, उसे एक ही लॉक टेबल स्टेटमेंट में आवश्यक सभी ताले हासिल करना चाहिए। इस प्रकार प्राप्त ताले लगाए जाते हैं, सत्र केवल लॉक टेबल तक पहुंच सकता है। उदाहरण के लिए, कथन के निम्नलिखित अनुक्रम में, टी 2 तक पहुंचने के प्रयास के लिए एक त्रुटि होती है क्योंकि यह LOCK टैबलेट कथन में लॉक नहीं था: "

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

संबंधित सवाल
सबसे लोकप्रिय