MySQL में एकाधिक टेबल लॉक करने के लिए LOCK TABLES कमांड का उपयोग करें।
सिंटैक्स:
LOCK TABLES table1 WRITE; LOCK TABLES table2 WRITE; LOCK TABLES table3 WRITE; ...;
महत्वपूर्ण: टेबल लॉक ट्रांजेक्शन-सेफ नहीं हैं। यह सक्रिय ट्रांजेक्शन को पहले निहित रूप से कमिट करता है।
उदाहरण:
CREATE TABLE OrderDemo (
OrderId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
OrderPrice INT,
OrderDateTime DATETIME
);
दो टेबल लॉक करें:
LOCK TABLES OrderDemo WRITE; LOCK TABLES utfdemo WRITE;
अब इसी सत्र में कोई अन्य टेबल बनाने का प्रयास करने पर त्रुटि होगी:
CREATE TABLE LockTableDemo (UserId INT, UserName VARCHAR(10)); -- ERROR 1100 (HY000): Table 'LockTableDemo' was not locked with LOCK TABLES
लॉक हटाने के लिए:
UNLOCK TABLES;
या MySQL रीस्टार्ट करें।
सर्वोत्तम अभ्यास:
- लॉक को यथासंभव कम समय तक रखें
- सभी आवश्यक टेबल एक ही
LOCK TABLESस्टेटमेंट में लॉक करें:LOCK TABLES t1 WRITE, t2 READ, t3 WRITE; - ट्रांजेक्शनल टेबल (InnoDB) के लिए
LOCK TABLESके बजाय ट्रांजेक्शन का उपयोग करें