Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL सेफ मोड में DELETE कैसे करें?


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

चेतावनी: सेफ मोड बंद करना जोखिम भरा हो सकता है। हमेशा काम पूरा होने पर इसे वापस चालू करें।


  1. - MySQL स्टोर्ड प्रोसीजर में पैरामीटर के साथ DELETE क्वेरी लागू करना

    MySQL स्टोर्ड प्रोसीजर में पैरामीटरीकृत DELETE स्टोर्ड प्रोसीजर इनपुट पैरामीटर स्वीकार करके पुन: प्रयोज्य, सुरक्षित DELETE संचालन को सक्षम करते हैं। यह SQL इंजेक्शन को रोकता है और कोड पुन: उपयोग को बढ़ावा देता है। उदाहरण: पैरामीटरीकृत DELETE प्रोसीजर SELECT * FROM DemoTable1464; +------+----------

  1. - MySQL में IN() क्लॉज़ के साथ एक क्वेरी में रिकॉर्ड कैसे डिलीट करें?

    MySQL में एक ही क्वेरी में एकाधिक विशिष्ट रिकॉर्ड डिलीट करने के लिए, DELETE स्टेटमेंट के साथ IN() ऑपरेटर का उपयोग करें। यह एकाधिक DELETE स्टेटमेंट चलाने से अधिक कुशल और पठनीय है। उदाहरण: विशिष्ट StudentId वाले रिकॉर्ड डिलीट करना डेमो टेबल बनाएं: mysql> CREATE TABLE DemoTable1922 ( StudentI

  1. - MySQL में सबक्वेरी से SELECT करके फिर DELETE कैसे करें?

    MySQL में सबक्वेरी के परिणाम के आधार पर पंक्तियाँ डिलीट करने के लिए, DELETE ... WHERE IN (subquery) पैटर्न का उपयोग करें। MySQL में उसी टेबल को सीधे सबक्वेरी में संदर्भित नहीं कर सकते, इसलिए डिराइव्ड टेबल (उपनाम के साथ) का उपयोग करना आवश्यक है। उदाहरण: पहले 3 रिकॉर्ड डिलीट करना (Id द्वारा क्रमबद्ध)