पोस्टग्रेज नेस्टेड लेनदेन का समर्थन करता है, लेकिन वे पारंपरिक एसक्यूएल से भिन्न होते हैं, जैसे नेस्टेड आंशिक बिंदुओं वाले लेनदेन।
शीर्ष स्तर पर आपके पास हमेशा अपना विशिष्ट BEGIN/COMMIT/ROLLBACK
होता है , और नेस्टेड स्तरों पर आपको निम्न आदेशों का उपयोग करना होगा:
SAVEPOINT name
- लेन-देन के लिए अद्वितीय नाम के साथ एक नया बचत बिंदु बनाता हैRELEASE SAVEPOINT name
- सेवपॉइंट करता है, हालांकि यह केवल तभी जारी रहेगा जब युक्त लेनदेन करता हैROLLBACK TO SAVEPOINT name
- सेवपॉइंट वापस रोल करता है
आपको यह भी सुनिश्चित करना होगा कि:
- प्रत्येक
SAVEPOINT
के लिए उपयोग किए जाने वाले नाम अद्वितीय हैं; - एक
SAVEPOINT
में विफलता ऊपर की ओर शीर्ष स्तर तक प्रचारित किया जाता है।
आखिरी बिट थोड़ा मुश्किल है, जब तक कि आप ऐसी लाइब्रेरी का उपयोग नहीं करते जो आपके लिए स्वचालित रूप से ऐसा कर सके।
जब मैंने पीजी-वादा लिखा, तो मैंने सुनिश्चित किया कि उन दो प्रावधानों की गारंटी है:
- यह
level_1
. के रूप में स्वचालित रूप से सेव-पॉइंट नाम जेनरेट करता है ,level_2
, और इसी तरह, लेन-देन के स्तर के आधार पर; - यह निष्पादित करता है जिसमें
ROLLBACK TO SAVEPOINT name
. होता है , साथ ही शीर्ष-स्तरीयROLLBACK
यदि कोई बच्चा लेन-देन विफल हो जाता है - सभी मानक वादा-श्रृंखला तर्क पर निर्मित होते हैं।
पोस्टग्रेएसक्यूएल नेस्टेड लेनदेन की सीमाएं भी देखें...