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

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

MySQL स्टोर्ड प्रोसीजर में पैरामीटरीकृत DELETE

स्टोर्ड प्रोसीजर इनपुट पैरामीटर स्वीकार करके पुन: प्रयोज्य, सुरक्षित DELETE संचालन को सक्षम करते हैं। यह SQL इंजेक्शन को रोकता है और कोड पुन: उपयोग को बढ़ावा देता है।

उदाहरण: पैरामीटरीकृत DELETE प्रोसीजर

mysql> CREATE TABLE DemoTable1464 (
    -> Id INT,
    -> FirstName VARCHAR(20)
    -> );
Query OK, 0 rows affected (0.51 sec)

mysql> INSERT INTO DemoTable1464 VALUES (101, 'Chris Brown'), (102, 'John Doe');
Query OK, 2 rows affected (0.11 sec)

mysql> SELECT * FROM DemoTable1464;
+------+-------------+
| Id   | FirstName   |
+------+-------------+
|  101 | Chris Brown |
|  102 | John Doe    |
+------+-------------+
2 rows in set (0.00 sec)

DELETE प्रोसीजर बनाएं

mysql> DELIMITER //
mysql> CREATE PROCEDURE delete_demo(IN local_Id INT, IN local_Name VARCHAR(20))
    -> BEGIN
    ->   DELETE FROM DemoTable1464
    ->   WHERE Id = local_Id AND FirstName = local_Name;
    -> END //
Query OK, 0 rows affected (0.24 sec)

mysql> DELIMITER ;

प्रोसीजर कॉल करें

mysql> CALL delete_demo(102, 'John Doe');
Query OK, 1 row affected, 1 warning (0.11 sec)

सत्यापन

mysql> SELECT * FROM DemoTable1464;
+------+-------------+
| Id   | FirstName   |
+------+-------------+
|  101 | Chris Brown |
+------+-------------+
1 row in set (0.00 sec)

मुख्य लाभ

  • पैरामीटरीकरण: SQL इंजेक्शन रोकता है
  • पुन: उपयोग: अलग-अलग मानों के साथ कई बार कॉल करें
  • एनकैप्सुलेशन: DELETE तर्क छुपाता है
  • लेन-देन: बड़े संचालन के लिए BEGIN/COMMIT/ROLLBACK जोड़ सकते हैं

उन्नत: प्रभावित पंक्तियों के साथ DELETE प्रोसीजर

CREATE PROCEDURE safe_delete(IN p_id INT, IN p_name VARCHAR(20), OUT p_affected INT)
BEGIN
    DELETE FROM DemoTable1464 WHERE Id = p_id AND FirstName = p_name;
    SET p_affected = ROW_COUNT();
    
    IF p_affected = 0 THEN
        SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'No matching record found';
    END IF;
END;

सुरक्षा सर्वोत्तम अभ्यास

  • हमेशा WHERE क्लॉज का उपयोग करें (आकस्मिक पूर्ण-टेबल डिलीट रोकता है)
  • उत्पादन में सॉफ्ट डिलीट (is_deleted फ्लैग) पर विचार करें
  • महत्वपूर्ण डेटा के लिए ऑडिट लॉगिंग जोड़ें
  • SQL_SAFE_UPDATES = 1 सेट करें (WHERE के बिना UPDATE/DELETE रोकता है)
  1. - MySQL स्टोर्ड प्रोसीजर में लागू क्वेरी से डेटाबेस नाम प्राप्त करें?

    डेटाबेस नाम प्राप्त करने के लिए नीचे दिए गए सिंटैक्स का उपयोग करें: select database(); आइए उपरोक्त सिंटैक्स को स्टोर्ड प्रोसीजर में लागू करते हैं: mysql> delimiter // mysql> create procedure get_procedure_database_name() -> begin -> select concat(The database name=,database()); -> en

  1. - MySQL में स्टोर्ड प्रोसीजर में IF ELSE लागू करें?

    IF-ELSE लागू करने के लिए, सिंटैक्स निम्न है: if yourCondition then yourStatement1; else yourStatement2; end if ; स्टोर्ड प्रोसीजर में IF-ELSE की उपरोक्त अवधारणा को समझने के लिए, आइए एक स्टोर्ड प्रोसीजर बनाते हैं: mysql> delimiter // mysql> create procedure If_else_stored_demo(value in

  1. - MySQL स्टोर्ड प्रोसीजर के अंदर डायनामिक SQL क्वेरी कैसे लागू करें

    समाधान PREPARE, EXECUTE, DEALLOCATE PREPARE स्टेटमेंट का उपयोग करें। उदाहरण टेबल बनाएं: INSERT INTO DemoTable2033 (Name) VALUES (Chris), (Bob), (David), (Mike); डायनामिक SQL के साथ प्रोसीजर DELIMITER ; कॉल करें CALL dynamic_query(); +----+-------+ | Id | Name | +----+-------+ | 3 | David | +