एसक्यूएल - लेनदेन

लेनदेन एक कार्य की एक इकाई है जो एक डेटाबेस के खिलाफ किया जाता है। लेन-देन एक तार्किक क्रम में पूरी की जाने वाली इकाइयाँ या अनुक्रम हैं, चाहे वह उपयोगकर्ता द्वारा मैन्युअल रूप से या किसी प्रकार के डेटाबेस प्रोग्राम द्वारा स्वचालित रूप से हो।

एक लेनदेन डेटाबेस में एक या एक से अधिक परिवर्तनों का प्रसार है। उदाहरण के लिए, यदि आप कोई रिकॉर्ड बना रहे हैं या रिकॉर्ड अपडेट कर रहे हैं या टेबल से कोई रिकॉर्ड हटा रहे हैं, तो आप उस टेबल पर लेनदेन कर रहे हैं। डेटा की अखंडता सुनिश्चित करने और डेटाबेस त्रुटियों को संभालने के लिए इन लेनदेन को नियंत्रित करना महत्वपूर्ण है।

व्यावहारिक रूप से, आप एक समूह में कई एसक्यूएल प्रश्नों को क्लब करेंगे और आप एक लेनदेन के एक हिस्से के रूप में उन सभी को एक साथ निष्पादित करेंगे।

लेन-देन के गुण

लेन-देन में निम्नलिखित चार मानक गुण होते हैं, जिन्हें आमतौर पर संक्षिप्त नाम से जाना जाता है ACID

  • Atomicity- यह सुनिश्चित करता है कि कार्य इकाई के भीतर सभी कार्य सफलतापूर्वक पूरे हो जाएं। अन्यथा, विफलता के बिंदु पर लेन-देन निरस्त कर दिया जाता है और पिछले सभी कार्यों को उनके पूर्व राज्य में वापस ले जाया जाता है।

  • Consistency - यह सुनिश्चित करता है कि डेटाबेस सफलतापूर्वक परिवर्तित किए गए लेनदेन पर सही ढंग से परिवर्तन करता है।

  • Isolation - लेनदेन को स्वतंत्र रूप से और एक दूसरे के लिए पारदर्शी संचालित करने में सक्षम बनाता है।

  • Durability - सुनिश्चित करता है कि प्रतिबद्ध लेनदेन का परिणाम या प्रभाव सिस्टम की विफलता के मामले में बना रहता है।

लेन-देन नियंत्रण

लेन-देन को नियंत्रित करने के लिए निम्न आदेशों का उपयोग किया जाता है।

  • COMMIT - परिवर्तनों को बचाने के लिए।

  • ROLLBACK - परिवर्तन वापस करने के लिए।

  • SAVEPOINT - लेन-देन के समूहों के भीतर अंक बनाता है जिसमें रोलबैक के लिए।

  • SET TRANSACTION - एक लेनदेन पर एक नाम रखता है।

ट्रांजैक्शनल कंट्रोल कमांड्स

लेन-देन नियंत्रण आदेश केवल के साथ उपयोग किया जाता है DML Commandsजैसे - INSERT, UPDATE और DELETE। इनका उपयोग तालिकाओं को बनाते समय या उन्हें गिराते समय नहीं किया जा सकता क्योंकि ये ऑपरेशन डेटाबेस में स्वचालित रूप से किए जाते हैं।

COMMIT कमांड

COMMIT कमांड एक ट्रांसेक्शनल कमांड है जिसका उपयोग डेटाबेस में ट्रांजेक्शन के लिए किए गए परिवर्तनों को बचाने के लिए किया जाता है।

COMMIT कमांड एक ट्रांसेक्शनल कमांड है जिसका उपयोग डेटाबेस में ट्रांजेक्शन के लिए किए गए परिवर्तनों को बचाने के लिए किया जाता है। COMMIT कमांड अंतिम COMMIT या ROLLBACK कमांड के बाद से डेटाबेस के सभी लेन-देन को बचाता है।

COMMIT कमांड के लिए सिंटैक्स निम्नानुसार है।

COMMIT;

Example

निम्नलिखित रिकॉर्ड वाले ग्राहक तालिका पर विचार करें -

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

निम्नलिखित एक उदाहरण है जो तालिका से उन अभिलेखों को हटा देगा जिनकी आयु = 25 है और फिर डेटाबेस में परिवर्तन की पुष्टि करते हैं।

SQL> DELETE FROM CUSTOMERS
   WHERE AGE = 25;
SQL> COMMIT;

इस प्रकार, तालिका से दो पंक्तियों को हटा दिया जाएगा और SELECT कथन निम्न परिणाम देगा।

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

रोल कमांड

रोलबैक कमांड लेनदेन को पूर्ववत करने के लिए उपयोग किया जाने वाला ट्रांसेक्शनल कमांड है जिसे पहले से डेटाबेस में सहेजा नहीं गया है। यह आदेश केवल पिछले COMMIT या ROLLBACK आदेश जारी होने के बाद लेनदेन को पूर्ववत करने के लिए उपयोग किया जा सकता है।

एक रोलबैक कमांड का सिंटैक्स इस प्रकार है -

ROLLBACK;

Example

निम्नलिखित रिकॉर्ड वाले ग्राहक तालिका पर विचार करें -

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

निम्नलिखित एक उदाहरण है, जो तालिका से उन रिकॉर्डों को हटा देगा जिनकी आयु = 25 है और फिर डेटाबेस में परिवर्तन को रोकें।

SQL> DELETE FROM CUSTOMERS
   WHERE AGE = 25;
SQL> ROLLBACK;

इस प्रकार, डिलीट ऑपरेशन टेबल को प्रभावित नहीं करेगा और सेलेक्ट स्टेटमेंट निम्न परिणाम देगा।

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

SAVEPOINT कमान

SAVEPOINT एक लेनदेन में एक बिंदु है जब आप पूरे लेनदेन को वापस किए बिना लेनदेन को एक निश्चित बिंदु पर वापस रोल कर सकते हैं।

SAVEPOINT कमांड के लिए सिंटैक्स नीचे दिखाया गया है।

SAVEPOINT SAVEPOINT_NAME;

यह आदेश केवल सभी लेन-देन के बयानों के बीच एक बचत के निर्माण में कार्य करता है। रोलबैक आदेश का उपयोग लेनदेन के एक समूह को पूर्ववत करने के लिए किया जाता है।

SAVEPOINT में वापस जाने के लिए सिंटैक्स नीचे दिखाया गया है।

ROLLBACK TO SAVEPOINT_NAME;

निम्नलिखित एक उदाहरण है जहां आप कस्टमर टेबल से तीन अलग-अलग रिकॉर्ड को हटाने की योजना बनाते हैं। आप प्रत्येक डिलीट से पहले एक SAVEPOINT बनाना चाहते हैं, ताकि आप किसी भी समय किसी भी SAVEPOINT को अपनी मूल स्थिति में उपयुक्त डेटा वापस करने के लिए लोड कर सकें।

Example

निम्नलिखित रिकॉर्ड वाले ग्राहक तालिका पर विचार करें।

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

निम्नलिखित कोड ब्लॉक में संचालन की श्रृंखला है।

SQL> SAVEPOINT SP1;
Savepoint created.
SQL> DELETE FROM CUSTOMERS WHERE ID=1;
1 row deleted.
SQL> SAVEPOINT SP2;
Savepoint created.
SQL> DELETE FROM CUSTOMERS WHERE ID=2;
1 row deleted.
SQL> SAVEPOINT SP3;
Savepoint created.
SQL> DELETE FROM CUSTOMERS WHERE ID=3;
1 row deleted.

अब जब तीन विलोपन हो चुके हैं, तो हम मान लें कि आपने अपना मन बदल लिया है और SAPPOINT में ROLLBACK का फैसला किया है जिसे आपने SP2 के रूप में पहचाना है। क्योंकि SP2 को पहले हटाने के बाद बनाया गया था, अंतिम दो हटाए गए पूर्ववत हैं -

SQL> ROLLBACK TO SP2;
Rollback complete.

ध्यान दें कि जब आप SP2 में वापस आए थे तब से केवल पहला विलोपन हुआ था।

SQL> SELECT * FROM CUSTOMERS;
+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+
6 rows selected.

कृपया जारी रखें आदेश

आपके द्वारा बनाए गए SAVEPOINT को निकालने के लिए RAILASE SAVEPOINT कमांड का उपयोग किया जाता है।

इस तरह से बचाओ आदेश के लिए वाक्यविन्यास निम्नानुसार है।

RELEASE SAVEPOINT SAVEPOINT_NAME;

एक बार SAVEPOINT जारी होने के बाद, आप अंतिम SAPPOINT के बाद से किए गए लेन-देन को पूर्ववत करने के लिए ROLLBACK कमांड का उपयोग नहीं कर सकते।

सेट परिवहन आदेश

डेटाबेस ट्रांजेक्शन आरंभ करने के लिए SET ट्रांज़क्शन कमांड का उपयोग किया जा सकता है। इस आदेश का उपयोग लेनदेन के लिए विशेषताओं को निर्दिष्ट करने के लिए किया जाता है। उदाहरण के लिए, आप केवल पढ़ने या लिखने के लिए किए जाने वाले लेन-देन को निर्दिष्ट कर सकते हैं।

SET TRANSACTION कमांड के लिए सिंटैक्स निम्नानुसार है।

SET TRANSACTION [ READ WRITE | READ ONLY ];