MySQLi - लेनदेन
लेन-देन डेटाबेस हेरफेर संचालन का एक अनुक्रमिक समूह है, जो कि एक एकल कार्य इकाई के रूप में किया जाता है। दूसरे शब्दों में, एक लेनदेन कभी भी पूरा नहीं होगा जब तक कि समूह के भीतर प्रत्येक व्यक्तिगत ऑपरेशन सफल न हो। यदि लेन-देन के भीतर कोई भी संचालन विफल हो जाता है, तो संपूर्ण लेनदेन विफल हो जाएगा।
व्यावहारिक रूप से, आप एक समूह में कई एसक्यूएल प्रश्नों को क्लब करेंगे और आप एक लेनदेन के हिस्से के रूप में उन सभी को एक साथ निष्पादित करेंगे।
लेन-देन के गुण
लेन-देन में निम्नलिखित चार मानक गुण होते हैं, जिन्हें आमतौर पर संक्षिप्त ACID द्वारा संदर्भित किया जाता है -
Atomicity- यह सुनिश्चित करता है कि कार्य इकाई के भीतर सभी संचालन सफलतापूर्वक पूरा हो गए हैं; अन्यथा, विफलता के बिंदु पर लेन-देन समाप्त कर दिया जाता है और पिछले ऑपरेशनों को उनके पूर्व राज्य में वापस ले जाया जाता है।
Consistency - यह सुनिश्चित करता है कि डेटाबेस सफलतापूर्वक परिवर्तित किए गए लेनदेन पर सही ढंग से परिवर्तन करता है।
Isolation - लेनदेन को स्वतंत्र रूप से संचालित करने और एक दूसरे के लिए पारदर्शी बनाने में सक्षम बनाता है।
Durability - सुनिश्चित करता है कि प्रतिबद्ध लेनदेन का परिणाम या प्रभाव सिस्टम की विफलता के मामले में बना रहता है।
MySQL में, लेन-देन BEGIN WORK के साथ शुरू होता है और एक COMMIT या रोलबैक कथन के साथ समाप्त होता है। शुरुआत और अंत के बयानों के बीच SQLi आदेश लेन-देन के थोक बनाता है।
संचार और रोलबैक
ये दो कीवर्ड Commit तथा Rollback मुख्य रूप से MySQL लेनदेन के लिए उपयोग किया जाता है।
जब एक सफल लेनदेन पूरा हो जाता है, तो COMMIT आदेश जारी किया जाना चाहिए ताकि सभी शामिल तालिकाओं में परिवर्तन प्रभावी हो जाएं।
यदि कोई विफलता होती है, तो लेन-देन आदेश जारी किया जाना चाहिए ताकि लेन-देन में संदर्भित प्रत्येक तालिका को उसकी पिछली स्थिति में वापस किया जा सके।
आप सत्र चर नामक सेटिंग द्वारा लेनदेन के व्यवहार को नियंत्रित कर सकते हैं AUTOCOMMIT। यदि AUTOCOMMIT को 1 (डिफ़ॉल्ट) पर सेट किया जाता है, तो प्रत्येक SQL स्टेटमेंट (एक लेनदेन के भीतर या नहीं) को एक पूर्ण लेनदेन माना जाता है और इसे समाप्त होने पर डिफ़ॉल्ट रूप से प्रतिबद्ध किया जाता है। जब AUTOCOMMIT को 0 पर सेट किया जाता है, तो SET AUTOCOMMIT = 0 कमांड जारी करके, बाद की कथनों की श्रृंखला एक लेन-देन की तरह काम करती है और जब तक कि एक स्पष्ट COMMIT स्टेटमेंट जारी नहीं किया जाता है, तब तक कोई भी गतिविधि नहीं की जाती है।
आप इन SQL कमांड को PHP में प्रयोग करके निष्पादित कर सकते हैं mysqli_query() समारोह।
लेन-देन पर सामान्य उदाहरण
घटनाओं का यह क्रम उपयोग की जाने वाली प्रोग्रामिंग भाषा से स्वतंत्र है; जिस भी भाषा में आप अपने एप्लिकेशन को बनाने के लिए उपयोग करते हैं, तार्किक मार्ग बनाया जा सकता है।
आप इन SQL कमांड को PHP में प्रयोग करके निष्पादित कर सकते हैं mysqli_query() समारोह।
SQL कमांड जारी करके लेनदेन शुरू करें BEGIN WORK.
एक या एक से अधिक SQL कमांड जैसे SELECT, INSERT, UPDATE या DELETE जारी करें।
जांचें कि क्या कोई त्रुटि नहीं है और सब कुछ आपकी आवश्यकता के अनुसार है।
यदि कोई त्रुटि है, तो रोलबैक आदेश जारी करें, अन्यथा एक कमिट आदेश जारी करें।
MySQLi में Transaction-Safe Table Types
आप सीधे लेनदेन का उपयोग नहीं कर सकते, आप कर सकते हैं लेकिन वे सुरक्षित और गारंटीकृत नहीं होंगे। यदि आप अपने MySQLi प्रोग्रामिंग में लेनदेन का उपयोग करने की योजना बनाते हैं, तो आपको एक विशेष तरीके से अपनी तालिकाओं को बनाने की आवश्यकता है। कई प्रकार के टेबल हैं, जो लेनदेन का समर्थन करते हैं लेकिन सबसे लोकप्रिय हैInnoDB।
MySQLi को स्रोत से संकलित करते समय InnoDB तालिकाओं के लिए समर्थन के लिए एक विशिष्ट संकलन पैरामीटर की आवश्यकता होती है। यदि आपके MySQLi संस्करण में InnoDB समर्थन नहीं है, तो अपने इंटरनेट सेवा प्रदाता को InnoDB तालिका प्रकारों के समर्थन के साथ MySQLi का एक संस्करण बनाने या डाउनलोड करने और Windows या Linux / UNIX के लिए MySQL-Max बाइनरी वितरण स्थापित करने और तालिका प्रकार के साथ काम करने के लिए कहें। एक विकास का माहौल।
यदि आपकी MySQLi स्थापना InnoDB तालिकाओं का समर्थन करती है, तो बस एक जोड़ें TYPE = InnoDBतालिका निर्माण कथन की परिभाषा। उदाहरण के लिए, निम्न कोड एक InnoDB तालिका बनाता है जिसे Tutorial_innodb कहा जाता है -
root@host# mysql -u root -p;
Enter password:*******
mysql> use TUTORIALS;
Database changed
mysql> create table tutorials_innodb
-> (
-> tutorial_author varchar(40) NOT NULL,
-> tutorial_count INT
-> ) TYPE = InnoDB;
Query OK, 0 rows affected (0.02 sec)
अधिक जानकारी के लिए निम्न लिंक की जाँच करें - InnoDB
आप अन्य तालिका प्रकारों का उपयोग कर सकते हैं GEMINI या BDB, लेकिन यह आपकी स्थापना पर निर्भर करता है अगर यह इन दो प्रकारों का समर्थन करता है।