1) आपके द्वारा किए गए सभी परिवर्तन एक ही लेन-देन में दिखाई देते हैं। अगर आप करते हैं
START TRANSACTION;
INSERT INTO MyTable VALUES ('Hi there');
SELECT * FROM MyTable;
आपके आउटपुट में 'हाय वहाँ' शामिल होगा। लेकिन अगर आप दूसरा डेटाबेस-कनेक्शन शुरू करते हैं तो नई पंक्ति तब तक प्रदर्शित नहीं होगी जब तक कि आप पहले कनेक्शन के भीतर से अपना लेनदेन नहीं कर लेते। कमांड-लाइन का उपयोग करके दो डेटाबेस-कनेक्शन का उपयोग करके इसके साथ खेलने का प्रयास करें।
आप अपनी वेबसाइट में प्रभाव नहीं देख रहे हैं क्योंकि आप दो डेटाबेस-कनेक्शन के भीतर एक ही लेन-देन नहीं कर सकते हैं (आपके अनुरोध की शुरुआत में एक नया डीबी-कनेक्शन बनाया जाएगा)।
2) डेटाबेस के साथ कनेक्शन बंद होने पर सभी लेन-देन जो प्रतिबद्ध नहीं हैं, उन्हें वापस ले लिया जाएगा। तो यदि ये आपके केवल दो प्रश्न हैं, तो कोई अंतर नहीं है। हालांकि इसमें अंतर है
START TRANSACTION;
INSERT INTO MyTable VALUES ('This one would be discarded on rollback');
ROLLBACK;
INSERT INTO MyTable VALUES ('This one will be permanent because not within transaction');
3) हाँ, ये सब एक जैसे हैं।