MySQL सेफ मोड (SQL_SAFE_UPDATES) बिना WHERE की-प्लस-कॉलम के DELETE/UPDATE को रोकता है। इसे अस्थायी रूप से अक्षम करें।
सिंटैक्स
SET SQL_SAFE_UPDATES = 0; -- सेफ मोड बंद -- DELETE/UPDATE क्वेरी चलाएं SET SQL_SAFE_UPDATES = 1; -- सेफ मोड चालू (अनुशंसित)
उदाहरण
टेबल बनाना
mysql> create table SafeDeleteDemo ( -> Price int -> ); Query OK, 0 rows affected (0.50 sec)
रिकॉर्ड डालना
mysql> insert into SafeDeleteDemo values(100); mysql> insert into SafeDeleteDemo values(200); mysql> insert into SafeDeleteDemo values(300); mysql> insert into SafeDeleteDemo values(500); mysql> insert into SafeDeleteDemo values(1000); mysql> insert into SafeDeleteDemo values(150);
हटाने से पहले
mysql> select *from SafeDeleteDemo;
+-------+ | Price | +-------+ | 100 | | 200 | | 300 | | 500 | | 1000 | | 150 | +-------+
सेफ मोड बंद करके DELETE करना
mysql> SET SQL_SAFE_UPDATES = 0; Query OK, 0 rows affected (0.00 sec) mysql> delete from SafeDeleteDemo where Price >= 500; Query OK, 2 rows affected (0.14 sec)
हटाने के बाद
mysql> select *from SafeDeleteDemo;
+-------+ | Price | +-------+ | 100 | | 200 | | 300 | | 150 | +-------+
सेफ मोड वापस चालू करना
mysql> SET SQL_SAFE_UPDATES = 1; Query OK, 0 rows affected (0.00 sec)
सेफ मोड क्या है?
- डिफ़ॉल्ट रूप से सक्षम होता है (MySQL 5.7+)
DELETEयाUPDATEबिनाWHEREक्लॉज के ब्लॉक करता हैWHEREक्लॉज होने पर भी, यदि यह प्राइमरी की या इंडेक्स्ड कॉलम का उपयोग नहीं करता, तो ब्लॉक कर सकता है
बेहतर विकल्प: WHERE में प्राइमरी की उपयोग करें
-- सेफ मोड चालू रहते हुए भी काम करेगा (यदि Id प्राइमरी की है) DELETE FROM SafeDeleteDemo WHERE Id IN (4, 5);
सत्र के लिए स्थायी रूप से बंद करना (कॉन्फिग फाइल में)
# my.cnf या my.ini में [mysqld] sql_safe_updates = 0
चेतावनी: सेफ मोड बंद करना जोखिम भरा हो सकता है। हमेशा काम पूरा होने पर इसे वापस चालू करें।