MySQL में WHERE क्लॉज के बिना बल्क UPDATE
किसी कॉलम के सभी मानों को एक ही मान पर सेट करने के लिए WHERE क्लॉज के बिना UPDATE स्टेटमेंट चलाएं।
टेबल और डेटा
CREATE TABLE BulkChangeDemo (
CustomerId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
CustomerName VARCHAR(20),
isEducated BOOLEAN
);
INSERT INTO BulkChangeDemo (CustomerName, isEducated) VALUES
('Larry', true), ('John', false), ('Carol', false),
('Mike', true), ('David', false), ('Bob', false);
बल्क अपडेट क्वेरी
UPDATE BulkChangeDemo SET isEducated = true;
परिणाम
Query OK, 4 rows affected (0.18 sec) Rows matched: 6 Changed: 4 Warnings: 0
केवल 4 पंक्तियां बदलीं क्योंकि 2 पहले से true थीं।
सत्यापन
SELECT * FROM BulkChangeDemo;
+------------+--------------+------------+ | CustomerId | CustomerName | isEducated | +------------+--------------+------------+ | 1 | Larry | 1 | | 2 | John | 1 | | 3 | Carol | 1 | | 4 | Mike | 1 | | 5 | David | 1 | | 6 | Bob | 1 | +------------+--------------+------------+
सुरक्षा सावधानियां
- हमेशा पहले SELECT चलाएं:
SELECT * FROM BulkChangeDemo WHERE isEducated = false;यह देखने के लिए कि कितनी पंक्तियां प्रभावित होंगी। - ट्रांजैक्शन उपयोग करें:
START TRANSACTION; UPDATE ...; -- जांचें; COMMIT/ROLLBACK; - बड़े टेबल पर: चरणों में अपडेट करें (LIMIT के साथ) लॉक एस्केलेशन से बचने के लिए।
sql_safe_updatesसक्षम होने परWHEREयाLIMITआवश्यक है।
चरणबद्ध अपडेट उदाहरण (बड़े टेबल के लिए)
UPDATE BulkChangeDemo SET isEducated = true WHERE isEducated = false LIMIT 1000;
इसे तब तक दोहराएं जब तक Rows matched: 0 न आ जाए।