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

क्या MySQL में स्टोर्ड प्रोसीजर का उपयोग करके एक साथ दो तालिकाओं में रिकॉर्ड डाल सकते हैं?

हां, MySQL में STORED PROCEDURE का उपयोग करके आप एक ही कॉल में दो (या अधिक) तालिकाओं में डेटा डाल सकते हैं। यह लेनदेन स्थिरता सुनिश्चित करता है और एप्लिकेशन कोड को सरल बनाता है।

दो तालिकाएं बनाना

mysql> CREATE TABLE DemoTable (
    StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    StudentFirstName VARCHAR(20)
);

mysql> CREATE TABLE DemoTable2 (
    ClientId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    ClientName VARCHAR(20),
    ClientAge INT
);

स्टोर्ड प्रोसीजर बनाना

mysql> DELIMITER //
mysql> CREATE PROCEDURE insert_into_twoTables(name VARCHAR(100), age INT)
    -> BEGIN
    ->     INSERT INTO DemoTable (StudentFirstName) VALUES (name);
    ->     INSERT INTO DemoTable2 (ClientName, ClientAge) VALUES (name, age);
    -> END //
mysql> DELIMITER ;

स्टोर्ड प्रोसीजर कॉल करना

mysql> CALL insert_into_twoTables('Tom', 38);

आउटपुट: Query OK, 1 row affected, 1 warning (0.41 sec)

दोनों तालिकाओं में डेटा सत्यापित करना

mysql> SELECT * FROM DemoTable;

आउटपुट:

+-----------+------------------+
| StudentId | StudentFirstName |
+-----------+------------------+
| 1         | Tom              |
+-----------+------------------+
mysql> SELECT * FROM DemoTable2;

आउटपुट:

+----------+------------+-----------+
| ClientId | ClientName | ClientAge |
+----------+------------+-----------+
| 1        | Tom        | 38        |
+----------+------------+-----------+

व्याख्या: स्टोर्ड प्रोसीजर पैरामीटर स्वीकार करता है और दो INSERT स्टेटमेंट निष्पादित करता है। DELIMITER बदलना आवश्यक है ताकि प्रोसीजर बॉडी में सेमीकॉलन को स्टेटमेंट अंत न माना जाए।

उत्पादन के लिए बेहतर अभ्यास - लेनदेन नियंत्रण:

CREATE PROCEDURE insert_into_twoTables(name VARCHAR(100), age INT)
BEGIN
    DECLARE EXIT HANDLER FOR SQLEXCEPTION
    BEGIN
        ROLLBACK;
        RESIGNAL;
    END;
    START TRANSACTION;
    INSERT INTO DemoTable (StudentFirstName) VALUES (name);
    INSERT INTO DemoTable2 (ClientName, ClientAge) VALUES (name, age);
    COMMIT;
END

यह सुनिश्चित करता है कि दोनों इंसर्ट सफल हों या कोई भी नहीं (परमाणुता)।

  1. - MySQL में एकाधिक टेबल्स से रिकॉर्ड इन्सर्ट कैसे करें?

    MySQL में दो या अधिक टेबल्स से डेटा संयोजित करके तीसरी टेबल में इन्सर्ट करने के लिए, INSERT INTO ... SELECT के साथ क्रॉस जॉइन (कॉमा सिंटैक्स) या स्पष्ट JOIN का उपयोग करें। यह कार्टेशियन प्रोडक्ट (सभी संयोजन) या मिलान वाले संयोजन बना सकता है। उदाहरण: Name और Age टेबल से Student टेबल में कार्टेशियन प

  1. - MySQL में एकल INSERT से एकाधिक रिकॉर्ड तेजी से डालें

    बल्क इंसर्ट सिंटैक्स से प्रदर्शन सुधारें एक ही INSERT स्टेटमेंट में कई मान सेट अल्पविराम से अलग करके डालें। सिंटैक्स: insert into yourTableName values(val1,val2,...),(val1,val2,...),...; उदाहरण: mysql> create table DemoTable2007 ( Amount1 int, Amount2 int, Amount3 int ); Query OK, 0 rows affected

  1. - MySQL स्टोर्ड प्रोसीजर में डिलीमीटर का सही उपयोग और मान डालना

    समस्या स्टोर्ड प्रोसीजर बनाते समय डिफ़ॉल्ट डिलीमीटर (;) क्वेरी को जल्दी समाप्त कर देता है। समाधान DELIMITER बदलें, प्रोसीजर बनाएं, फिर डिलीमीटर बहाल करें। उदाहरण टेबल बनाएं: ); स्टोर्ड प्रोसीजर बनाएं DELIMITER ; प्रोसीजर कॉल करें CALL insert_name(Chris, Brown); परिणाम +------------------+---